function_reordering_plugin.c includes <elf.h> which is not available
on non-ELF platforms building a cross-compiler. This patch checks for
<elf.h> before including it. Otherwise, it redefines the macros used.
This is safe because the macros will not change.

For context, this linker plugin itself is only available in the google
4_6 branch and I will port it to other branches and make it available
for review for trunk soon.


2012-02-24  Sriraman Tallam  <tmsri...@google.com>

        * function_reordering_plugin.c: Check for presence of elf.h.
        Otherwise, redefine the elf macros used.

Ok to commit?

Thanks,
-Sri.
Index: function_reordering_plugin/function_reordering_plugin.c
===================================================================
--- function_reordering_plugin/function_reordering_plugin.c     (revision 
184564)
+++ function_reordering_plugin/function_reordering_plugin.c     (working copy)
@@ -43,11 +43,23 @@ along with this program; see the file COPYING3.  I
 #include <stdlib.h>
 #include <assert.h>
 #include <string.h>
-#include <elf.h>
+#if  defined (__ELF__)
+  #include <elf.h>
+#endif
 #include "config.h"
 #include "plugin-api.h"
 #include "callgraph.h"
 
+/* #include <elf.h>   Not available on Darwin. 
+   Rather than dealing with cross-compilation includes, hard code the
+   values we need, as these will not change.  */
+#ifndef SHT_NULL
+ #define SHT_NULL 0
+#endif
+#ifndef SHT_PROGBITS
+ #define SHT_PROGBITS 1
+#endif
+
 enum ld_plugin_status claim_file_hook (const struct ld_plugin_input_file *file,
                                        int *claimed);
 enum ld_plugin_status all_symbols_read_hook ();

Reply via email to