1. 29 Aug, 2016 1 commit
  2. 23 Aug, 2016 3 commits
  3. 22 Aug, 2016 12 commits
  4. 28 Jun, 2016 1 commit
  5. 16 Jun, 2016 5 commits
    • David Gibson's avatar
      altstack: Don't log internal calls in test cases · c21a1eff
      David Gibson authored
      altstack/test/run.c uses some hairy macros to intercept the standard
      library functions that altstack uses.  This has two purposes: 1) to
      conditionally cause those functions to fail, and thereby test altstack's
      error paths, and 2) log which of the library functions was called in each
      testcase.
      
      The second function isn't actually useful - for the purposes of testing the
      module, we want to check the actual behaviour, not what calls it made in
      what order to accomplish it.  Explicitly checking the calls makes it much
      harder to change altstack's implementation without breaking the tests.
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      c21a1eff
    • David Gibson's avatar
      altstack: Don't use 0 pointer literals · 9683a45f
      David Gibson authored
      In a number of places the altstack module uses a literal '0' for pointer
      values.  That's correct C, but doesn't make it obvious on a quick read
      whether values are integers or pointers.  This patch changes those cases
      to use the NULL define instead.
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      9683a45f
    • David Gibson's avatar
      altstack: Use ptrint instead of bare casts · 029a45b8
      David Gibson authored
      Functions invoked with altstack take a void * parameter.  However, the
      test program wants to pass an integer, and so uses the trick of casting
      the integer values to (void *) and back again.
      
      The ptrint() module handles exactly this case in a more portable and
      (somewhat) typesafe way, so use that instead.
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      029a45b8
    • David Gibson's avatar
      altstack: Restore alternate signal stack state · 15c555b3
      David Gibson authored
      altstack relies on catching a SIGSEGV caused when overrunning the stack.
      This means that the SEGV handler itself can't use the already overflowed
      stack, and so we use sigaltstack() to assign the signal handler a different
      stack.  On completion, altstack() clears the alternate signal stack.
      
      However, it's possible that the calling program could be using
      sigaltstack() for its own reasons, so it's more correct to restore the
      sigaltstack() state to that from the beginning of the altstack() call.
      This patch implements this behaviour.
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      15c555b3
    • David Gibson's avatar
      altstack: Consolidate thread-local variables · 2da0271f
      David Gibson authored
      altstack uses a number of __thread variables to track internal state.  This
      allows altstack to be thread-safe, although it's still not re-entrant.
      This patch gathers all these variables into a single per-thread state
      structure.  This makes it easy to see at a glance what the whole of the
      required state is, and thereby easier to reason about correctness of
      changes to the implementation.
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      2da0271f
  6. 06 Jun, 2016 3 commits
  7. 05 Jun, 2016 2 commits
  8. 03 Jun, 2016 1 commit
  9. 02 Jun, 2016 6 commits
  10. 31 May, 2016 3 commits
  11. 09 May, 2016 3 commits
    • David Gibson's avatar
      Build info files · cff22b4a
      David Gibson authored
      All modules have a _info file (a C file, despite the lack of extension)
      giving metadata for the module.  The Makefiles have a rule to build these..
      but it's broken (missing an include directive).
      
      This patch fixes the rule, and builds the info binaries for all modules by
      default.  This is a useful check and also useful for manually inspecting
      a module's metadata.
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      cff22b4a
    • David Gibson's avatar
      Automatically determine which modules have source · a1d7e21f
      David Gibson authored
      Currently, build of ccan is controlled by two Make variables: MODS_WITH_SRC
      and MODS_NO_SRC which list modules containing .c files, and modules with
      only .h files respectively.
      
      When adding new modules this is fiddly to get right, and there are a number
      of modules already listed in the wrong variable.  There's also some
      redundant logic in the DIRS variable to again filter out modules without
      source.
      
      This simplifies things by having a single manually updated MODS variable
      listing every module, and determining MODS_WITH_SOURCE programmatically.
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      a1d7e21f
    • Rusty Russell's avatar
      ee77e470