On 05/21/2015 06:41 AM, Tristan Gingold wrote:
Hello,
this patch adds basic support to libbacktrace for PE32 and PE32+ (Windows and
Windows64 object formats).
Support is ‘basic’ because neither DLL nor PIE (if that exists) are handled.
Furthermore, there is no windows versions of mmapio.c and mmap.c
Finally, I have disabled the support of data symbols for PE because I wasn’t
able to pass ‘make check’ with that: symbol ‘_global’ is at the same address as
a symbol defined by the linker and I haven’t found any way to discard the
latter. As I think data symbol support isn’t a required feature, I have
preferred to disable that feature on PE.
The new file, pecoff.c, mostly follows the structure of elf.c
Tested on both windows and windows64.
No regression on Gnu/Linux x86.
Tristan.
2015-05-21 Tristan Gingold <ging...@adacore.com>
* pecoff.c: New file.
* Makefile.am (FORMAT_FILES): Add pecoff.c and dependencies.
* Makefile.in: Regenerate.
* filetype.awk: Detect pecoff.
* configure.ac: Define BACKTRACE_SUPPORTS_DATA on elf platforms.
Add pecoff.
* btest.c (test5): Test enabled only if BACKTRACE_SUPPORTS_DATA is
true.
* backtrace-supported.h.in (BACKTRACE_SUPPORTS_DATA): Define.
* configure: Regenerate.
* pecoff.c: New file.
+
+/* Return true iff SYM is a defined symbol for a function. Data symbols
+ are discarded because they aren't easily identified. */
+
+static int
+coff_is_symbol (const b_coff_internal_symbol *isym)
+{
+ return isym->type == 0x20 && isym->sec > 0;
+}
You probably want const or enum so that you can have a symbolic name
rather than 0x20 here. It also seems like the name ought to better
indicate it's testing for function symbols.
It's a given that you know COFF specifics better than I ever did, so
I'm comfortable assuming you got the COFF specifics right.
The overall structure of elf.c & coff.c is the same with code templates
that are very similar, except they work on different underlying types.
Presumably there wasn't a good way to factor any of the generic
looking bits out? And no, I'm not requesting you rewrite all this in
BFD :-)
OK for the trunk. Any future issues with the coff bits I'll send your way.
jeff