]> granicus.if.org Git - yasm/commitdiff
Hide 386-specific constants from non-internal use.
authorMichael Urman <mu@tortall.net>
Sat, 2 Aug 2003 17:23:48 +0000 (17:23 -0000)
committerMichael Urman <mu@tortall.net>
Sat, 2 Aug 2003 17:23:48 +0000 (17:23 -0000)
Change interface of elf_reloc_entry_new() to allow this.

svn path=/trunk/yasm/; revision=1025

modules/objfmts/elf/elf-objfmt.c
modules/objfmts/elf/elf.c
modules/objfmts/elf/elf.h

index 45beb26b99bb1abf3b2cee2c3a7fda6d3048f4c2..37e0853fbca2a4c15a109a195ef5ad6c57630907 100644 (file)
@@ -231,8 +231,6 @@ elf_objfmt_output_expr(yasm_expr **ep, unsigned char *buf, size_t destsize,
        }
 
        if (rel) {
-           reloc = elf_reloc_entry_new(sym, bc->offset + offset, R_386_PC32);
-
            /* Need to reference to start of section, so add $$ in. */
            *ep = yasm_expr_new(YASM_EXPR_ADD, yasm_expr_expr(*ep),
                yasm_expr_sym(yasm_symrec_define_label("$$", info->sect,
@@ -243,9 +241,9 @@ elf_objfmt_output_expr(yasm_expr **ep, unsigned char *buf, size_t destsize,
                yasm_expr_int(yasm_intnum_new_uint(bc->offset + offset)),
                (*ep)->line);
            *ep = yasm_expr_simplify(*ep, yasm_common_calc_bc_dist);
-       } else
-           reloc = elf_reloc_entry_new(sym, bc->offset + offset, R_386_32);
+       }
 
+       reloc = elf_reloc_entry_new(sym, bc->offset + offset, rel);
        /* allocate .rel sections on a need-basis */
        if (elf_secthead_append_reloc(info->shead, reloc))
            elf_objfmt_parse_scnum++;
index e6e99a16d7b30dff2ede45e3d736dceca6be6398..106c51367f1acba63664e0e6ba09d32882462fd6 100644 (file)
@@ -38,7 +38,7 @@
 elf_reloc_entry *
 elf_reloc_entry_new(yasm_symrec *sym,
                    elf_address addr,
-                   elf_relocation_type rtype)
+                   int rel)
 {
     elf_reloc_entry *entry = yasm_xmalloc(sizeof(elf_reloc_entry));
 
@@ -47,7 +47,7 @@ elf_reloc_entry_new(yasm_symrec *sym,
 
     entry->sym = sym;
     entry->addr = addr;
-    entry->rtype = rtype;
+    entry->rtype = rel ? R_386_PC32 : R_386_32;
 
     return entry;
 }
index 17bab8794e1f073843052febbfaeb8c7e47636ba..339aff65c9a3b6b6d1a8936111965e85cb092076 100644 (file)
@@ -1,4 +1,4 @@
-/*
+/* $IdPath$
  * ELF object format helpers
  *
  *  Copyright (C) 2003  Michael Urman
@@ -166,6 +166,13 @@ typedef enum {
     STN_UNDEF = 0
 } elf_symbol_index;
 
+
+/* internal only object definitions */
+#ifdef YASM_OBJFMT_ELF_INTERNAL
+
+#define ELF32_ST_INFO(bind, type)      (((bind) << 4) + ((type) & 0xf))
+#define ELF32_R_INFO(s,t)              (((s)<<8)+(unsigned char)(t))
+
 /* elf relocation type - index of semantics */
 typedef enum {
     R_386_NONE = 0,            /* none */
@@ -181,13 +188,6 @@ typedef enum {
     R_386_GOTPC = 10           /* word, GOT + A - P */
 } elf_relocation_type;
 
-
-/* internal only object definitions */
-#ifdef YASM_OBJFMT_ELF_INTERNAL
-
-#define ELF32_ST_INFO(bind, type)      (((bind) << 4) + ((type) & 0xf))
-#define ELF32_R_INFO(s,t)              (((s)<<8)+(unsigned char)(t))
-
 struct elf_secthead {
     elf_section_type    type;
     elf_section_flags   flags;
@@ -265,7 +265,7 @@ struct elf_symtab_entry {
 /* reloc functions */
 elf_reloc_entry *elf_reloc_entry_new(yasm_symrec *sym,
                                     elf_address addr,
-                                    elf_relocation_type rtype);
+                                    int rel);
 void elf_reloc_entry_delete(elf_reloc_entry *entry);
 elf_reloc_head *elf_relocs_new(void);
 void elf_reloc_delete(elf_reloc_head *head);