Add .refsym to msp430 backend
authorDJ Delorie <dj@redhat.com>
Wed, 22 Jan 2014 21:41:13 +0000 (16:41 -0500)
committerDJ Delorie <dj@redhat.com>
Wed, 22 Jan 2014 21:41:13 +0000 (16:41 -0500)
* config/tc-msp430.c (msp430_refsym): New: ".refsym <symbol>"
* doc/c-msp430.texi (MSP430 Directives): Document it.

The purpose of this patch is to provide a way for one object file
to require the inclusion of another object, without having to
allocate space for a .word address reference.

gas/ChangeLog
gas/config/tc-msp430.c
gas/doc/c-msp430.texi

index 6a641416c9f6ccfcebaeb4e6edd438984b1a82d6..79ab63ad5d5e06fc08018909f2b9126c4ae823ac 100644 (file)
@@ -1,3 +1,8 @@
+2014-01-22  DJ Delorie  <dj@redhat.com>
+
+       * config/tc-msp430.c (msp430_refsym): New: ".refsym <symbol>"
+       * doc/c-msp430.texi (MSP430 Directives): Document it.
+
 2014-01-22  Michael Zolotukhin  <michael.v.zolotukhin@gmail.com>
 
        * config/tc-i386.c (check_VecOperands): Remove regzmm from AVX2
index c2a7b9b3c4a5b5d6f6a2b4bb4b33431dc6f51fe2..189319e66fae3a6692785592b00b75300cf86976 100644 (file)
@@ -1257,6 +1257,15 @@ msp430_section (int arg)
   obj_elf_section (arg);
 }
 
+static void
+msp430_refsym (int arg ATTRIBUTE_UNUSED)
+{
+  char sym_name[1024];
+  input_line_pointer = extract_word (input_line_pointer, sym_name, 1024);
+
+  (void) symbol_find_or_make (sym_name);
+}
+
 const pseudo_typeS md_pseudo_table[] =
 {
   {"arch", msp430_set_arch, OPTION_MMCU},
@@ -1267,6 +1276,7 @@ const pseudo_typeS md_pseudo_table[] =
   {"sect", msp430_section, 0},
   {"sect.s", msp430_section, 0},
   {"pushsection", msp430_section, 1},
+  {"refsym", msp430_refsym, 0},
   {NULL, NULL, 0}
 };
 
index 77d6fd1178eb03f23770431cdec63a1607ab3668..4a46961900e92501768208dace7c04dca9f2263e 100644 (file)
@@ -263,6 +263,15 @@ command line option.
 @item .profiler
 This directive instructs assembler to add new profile entry to the object file.
 
+@cindex @code{refsym} directive, MSP 430
+@item .refsym
+This directive instructs assembler to add an undefined reference to
+the symbol following the directive.  The maximum symbol name length is
+1023 characters.  No relocation is created for this symbol; it will
+exist purely for pulling in object files from archives.  Note that
+this reloc is not sufficient to prevent garbage collection; use a
+KEEP() directive in the linker file to preserve such objects.
+
 @end table
 
 @node MSP430 Opcodes
This page took 0.038504 seconds and 4 git commands to generate.