]> gcc.gnu.org Git - gcc.git/commitdiff
sysv.S (FDE_ENCODING, FDE_ENCODE): Define.
authorRichard Henderson <rth@redhat.com>
Mon, 29 Nov 2010 16:43:24 +0000 (08:43 -0800)
committerRainer Orth <ro@gcc.gnu.org>
Mon, 29 Nov 2010 16:43:24 +0000 (16:43 +0000)
2010-11-29  Richard Henderson  <rth@redhat.com>
    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

* src/x86/sysv.S (FDE_ENCODING, FDE_ENCODE): Define.
(.eh_frame): Use FDE_ENCODING.
(.LASFDE1, .LASFDE2, LASFDE3): Simplify with FDE_ENCODE.

Co-Authored-By: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
From-SVN: r167251

libffi/ChangeLog
libffi/src/x86/sysv.S

index b5f87d396aea585659ee1af62e1b988d86b5afbb..6b78da8b0535890e99fae0b160a314c86f3d0b58 100644 (file)
@@ -1,3 +1,10 @@
+2010-11-29  Richard Henderson  <rth@redhat.com>
+           Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * src/x86/sysv.S (FDE_ENCODING, FDE_ENCODE): Define.
+       (.eh_frame): Use FDE_ENCODING.
+       (.LASFDE1, .LASFDE2, LASFDE3): Simplify with FDE_ENCODE.
+
 2010-11-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
        * testsuite/lib/libffi-dg.exp: Rename ...
index f3b0bd5ac52bcaffd57bf0d0d8403fc9e24012f4..f108dd80d71993f8d7e006d62bf557d7fdb34a06 100644 (file)
@@ -328,6 +328,25 @@ ffi_closure_raw_SYSV:
        .size   ffi_closure_raw_SYSV, .-ffi_closure_raw_SYSV
 #endif
 
+#if defined __PIC__
+# if defined __sun__ && defined __svr4__
+/* 32-bit Solaris 2/x86 uses datarel encoding for PIC.  GNU ld before 2.22
+   doesn't correctly sort .eh_frame_hdr with mixed encodings, so match this.  */
+#  define FDE_ENCODING         0x30    /* datarel */
+#  define FDE_ENCODE(X)                X@GOTOFF
+# else
+#  define FDE_ENCODING         0x1b    /* pcrel sdata4 */
+#  if defined HAVE_AS_X86_PCREL
+#   define FDE_ENCODE(X)       X-.
+#  else
+#   define FDE_ENCODE(X)       X@rel
+#  endif
+# endif
+#else
+# define FDE_ENCODING          0       /* absolute */
+# define FDE_ENCODE(X)         X
+#endif
+
        .section        .eh_frame,EH_FRAME_FLAGS,@progbits
 .Lframe1:
        .long   .LECIE1-.LSCIE1 /* Length of Common Information Entry */
@@ -354,7 +373,7 @@ ffi_closure_raw_SYSV:
        .byte   0x8     /* CIE RA Column */
 #ifdef __PIC__
        .byte   0x1     /* .uleb128 0x1; Augmentation size */
-       .byte   0x1b    /* FDE Encoding (pcrel sdata4) */
+       .byte   FDE_ENCODING
 #endif
        .byte   0xc     /* DW_CFA_def_cfa */
        .byte   0x4     /* .uleb128 0x4 */
@@ -367,14 +386,8 @@ ffi_closure_raw_SYSV:
        .long   .LEFDE1-.LASFDE1        /* FDE Length */
 .LASFDE1:
        .long   .LASFDE1-.Lframe1       /* FDE CIE offset */
-#if defined __PIC__ && defined HAVE_AS_X86_PCREL
-       .long   .LFB1-. /* FDE initial location */
-#elif defined __PIC__
-       .long   .LFB1@rel
-#else
-       .long   .LFB1
-#endif
-       .long   .LFE1-.LFB1     /* FDE address range */
+       .long   FDE_ENCODE(.LFB1)       /* FDE initial location */
+       .long   .LFE1-.LFB1             /* FDE address range */
 #ifdef __PIC__
        .byte   0x0     /* .uleb128 0x0; Augmentation size */
 #endif
@@ -394,14 +407,8 @@ ffi_closure_raw_SYSV:
        .long   .LEFDE2-.LASFDE2        /* FDE Length */
 .LASFDE2:
        .long   .LASFDE2-.Lframe1       /* FDE CIE offset */
-#if defined __PIC__ && defined HAVE_AS_X86_PCREL
-       .long   .LFB2-. /* FDE initial location */
-#elif defined __PIC__
-       .long   .LFB2@rel
-#else
-       .long   .LFB2
-#endif
-       .long   .LFE2-.LFB2     /* FDE address range */
+       .long   FDE_ENCODE(.LFB2)       /* FDE initial location */
+       .long   .LFE2-.LFB2             /* FDE address range */
 #ifdef __PIC__
        .byte   0x0     /* .uleb128 0x0; Augmentation size */
 #endif
@@ -430,14 +437,8 @@ ffi_closure_raw_SYSV:
        .long   .LEFDE3-.LASFDE3        /* FDE Length */
 .LASFDE3:
        .long   .LASFDE3-.Lframe1       /* FDE CIE offset */
-#if defined __PIC__ && defined HAVE_AS_X86_PCREL
-       .long   .LFB3-. /* FDE initial location */
-#elif defined __PIC__
-       .long   .LFB3@rel
-#else
-       .long   .LFB3
-#endif
-       .long   .LFE3-.LFB3     /* FDE address range */
+       .long   FDE_ENCODE(.LFB3)       /* FDE initial location */
+       .long   .LFE3-.LFB3             /* FDE address range */
 #ifdef __PIC__
        .byte   0x0     /* .uleb128 0x0; Augmentation size */
 #endif
This page took 0.075582 seconds and 5 git commands to generate.