patches for Irix binutils 2.18
Jay
jay.krell@cornell.edu
Sun Oct 19 13:25:00 GMT 2008
These small reasonable patches let you build binutils 2.18 with Irix's /usr/WorkShop/usr/bin/ncc, which is an old EDG compiler, and which seems to come with the system "for no additional cost".
specifically:
no C++ comments
no free cast from non-void* to other non-void* -- go through void* or cast to the correct type
These patches are applied by some Python code, so lack context, so just use the lazy void*.
I realize using the right type might be preferred, like for C++ compati.
gas works (and is required by gcc 4.3.2)
cross GNU ld (which doesn't need these patches) fails to find libc.a -- yes, I think I have an ok sysroot.
If you point cross GNU ld at the libc.a directly, or if you just let native GNU ld run -- it finds it --
you hit an assertion failure. I'll look into that /much/ later. Meantime, I can build gcc with ncc and GNU as.
Well, it isn't finished yet, but it is far along.
diff -ru binutils-2.18.orig/gas/bfin-parse.c binutils-2.18/gas/bfin-parse.c
--- binutils-2.18.orig/gas/bfin-parse.c 2007-08-06 13:39:29.000000000 -0700
+++ binutils-2.18/gas/bfin-parse.c 2008-10-19 06:10:04.578125000 -0700
@@ -424,7 +424,7 @@
#include "as.h"
#include
-#include "bfin-aux.h" // opcode generating auxiliaries
+#include "bfin-aux.h" /* opcode generating auxiliaries */
#include "libbfd.h"
#include "elf/common.h"
#include "elf/bfin.h"
diff -ru binutils-2.18.orig/gas/config/tc-bfin.c binutils-2.18/gas/config/tc-bfin.c
--- binutils-2.18.orig/gas/config/tc-bfin.c 2007-08-06 12:59:55.000000000 -0700
+++ binutils-2.18/gas/config/tc-bfin.c 2008-10-19 06:10:19.500000000 -0700
@@ -1488,14 +1488,14 @@
{
int value, offset;
switch (sz)
- { // load/store access size
- case 0: // 32 bit
+ { /* load/store access size */
+ case 0: /* 32 bit */
value = EXPR_VALUE (poffset)>> 2;
break;
- case 1: // 16 bit
+ case 1: /* 16 bit */
value = EXPR_VALUE (poffset)>> 1;
break;
- case 2: // 8 bit
+ case 2: /* 8 bit */
value = EXPR_VALUE (poffset);
break;
default:
diff -ru binutils-2.18.orig/gas/config/tc-cr16.c binutils-2.18/gas/config/tc-cr16.c
--- binutils-2.18.orig/gas/config/tc-cr16.c 2007-07-03 04:01:04.000000000 -0700
+++ binutils-2.18/gas/config/tc-cr16.c 2008-10-19 06:10:19.531250000 -0700
@@ -1733,10 +1733,10 @@
{
if (instruction->size == 2)
{
- CR16_PRINT (0, ((constant)&0xf), shift); // 0-3 bits
- CR16_PRINT (0, ((constant>>4)&0x3), (shift+20)); // 4-5 bits
- CR16_PRINT (0, ((constant>>6)&0x3), (shift+14)); // 6-7 bits
- CR16_PRINT (0, ((constant>>8)&0x3f), (shift+8)); // 8-13 bits
+ CR16_PRINT (0, ((constant)&0xf), shift); /* 0-3 bits */
+ CR16_PRINT (0, ((constant>>4)&0x3), (shift+20)); /* 4-5 bits */
+ CR16_PRINT (0, ((constant>>6)&0x3), (shift+14)); /* 6-7 bits */
+ CR16_PRINT (0, ((constant>>8)&0x3f), (shift+8)); /* 8-13 bits */
}
else
CR16_PRINT (0, constant, shift);
diff -ru binutils-2.18.orig/gas/config/tc-hppa.c binutils-2.18/gas/config/tc-hppa.c
--- binutils-2.18.orig/gas/config/tc-hppa.c 2007-08-06 12:59:57.000000000 -0700
+++ binutils-2.18/gas/config/tc-hppa.c 2008-10-19 06:10:19.812500000 -0700
@@ -1211,7 +1211,7 @@
int unwind_bits ATTRIBUTE_UNUSED)
{
fixS *new_fix;
- struct hppa_fix_struct *hppa_fix = obstack_alloc (¬es, sizeof (struct hppa_fix_struct));
+ struct hppa_fix_struct *hppa_fix = (void *) obstack_alloc (¬es, sizeof (struct hppa_fix_struct));
if (exp != NULL)
new_fix = fix_new_exp (frag, where, size, exp, pcrel, r_type);
@@ -8568,7 +8568,7 @@
if (new_fix)
{
- struct hppa_fix_struct * hppa_fix = obstack_alloc (¬es, sizeof (struct hppa_fix_struct));
+ struct hppa_fix_struct * hppa_fix = (void *) obstack_alloc (¬es, sizeof (struct hppa_fix_struct));
hppa_fix->fx_r_type = R_HPPA;
hppa_fix->fx_r_field = e_fsel;
@@ -8589,7 +8589,7 @@
if (new_fix)
{
- struct hppa_fix_struct * hppa_fix = obstack_alloc (¬es, sizeof (struct hppa_fix_struct));
+ struct hppa_fix_struct * hppa_fix = (void *) obstack_alloc (¬es, sizeof (struct hppa_fix_struct));
hppa_fix->fx_r_type = R_HPPA;
hppa_fix->fx_r_field = e_fsel;
diff -ru binutils-2.18.orig/gas/config/tc-ia64.c binutils-2.18/gas/config/tc-ia64.c
--- binutils-2.18.orig/gas/config/tc-ia64.c 2007-08-06 12:59:58.000000000 -0700
+++ binutils-2.18/gas/config/tc-ia64.c 2008-10-19 06:10:20.093750000 -0700
@@ -4865,11 +4865,11 @@
if (!*drpp)
{
- *drpp = obstack_alloc (¬es, sizeof (*dr));
+ *drpp = (void *) obstack_alloc (¬es, sizeof (*dr));
memset (*drpp, 0, sizeof (*dr));
}
- name = obstack_alloc (¬es, len + 1);
+ name = (void *) obstack_alloc (¬es, len + 1);
memcpy (name, start, len);
name[len] = '\0';
@@ -7913,7 +7913,7 @@
labels. */
if (defining_tag)
{
- fix = obstack_alloc (¬es, sizeof (*fix));
+ fix = (void *) obstack_alloc (¬es, sizeof (*fix));
fix->sym = sym;
fix->next = CURR_SLOT.tag_fixups;
fix->dw2_mark_labels = FALSE;
@@ -7925,7 +7925,7 @@
if (bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE)
{
md.last_text_seg = now_seg;
- fix = obstack_alloc (¬es, sizeof (*fix));
+ fix = (void *) obstack_alloc (¬es, sizeof (*fix));
fix->sym = sym;
fix->next = CURR_SLOT.label_fixups;
fix->dw2_mark_labels = dwarf2_loc_mark_labels;
diff -ru binutils-2.18.orig/gas/config/tc-m68k.c binutils-2.18/gas/config/tc-m68k.c
--- binutils-2.18.orig/gas/config/tc-m68k.c 2007-08-06 13:00:00.000000000 -0700
+++ binutils-2.18/gas/config/tc-m68k.c 2008-10-19 06:10:20.312500000 -0700
@@ -4414,7 +4414,7 @@
if (i + 1 != m68k_numopcodes
&& !strcmp (ins->name, m68k_sorted_opcodes[i + 1]->name))
{
- slak->m_next = obstack_alloc (&robyn, sizeof (struct m68k_incant));
+ slak->m_next = (void *) obstack_alloc (&robyn, sizeof (struct m68k_incant));
i++;
}
else
@@ -4531,7 +4531,7 @@
while (mote_pseudo_table[n].poc_name)
{
- hack = obstack_alloc (&robyn, sizeof (struct m68k_incant));
+ hack = (void *) obstack_alloc (&robyn, sizeof (struct m68k_incant));
hash_insert (op_hash,
mote_pseudo_table[n].poc_name, (char *) hack);
hack->m_operands = 0;
@@ -6177,8 +6177,8 @@
case MCC ('g', 't'): return MCC ('l', 't');
case MCC ('l', 'e'): return MCC ('g', 'e');
/* Issue a warning for conditions we can not swap. */
- case MCC ('n', 'e'): return MCC ('n', 'e'); // no problem here
- case MCC ('e', 'q'): return MCC ('e', 'q'); // also no problem
+ case MCC ('n', 'e'): return MCC ('n', 'e'); /* no problem here */
+ case MCC ('e', 'q'): return MCC ('e', 'q'); /* also no problem */
case MCC ('v', 'c'):
case MCC ('v', 's'):
default :
diff -ru binutils-2.18.orig/gas/config/tc-mips.c binutils-2.18/gas/config/tc-mips.c
--- binutils-2.18.orig/gas/config/tc-mips.c 2007-08-06 13:00:02.000000000 -0700
+++ binutils-2.18/gas/config/tc-mips.c 2008-10-19 06:10:20.609375000 -0700
@@ -1823,17 +1823,17 @@
helps us detect invalid uses of them. */
for (i = 0; reg_names[i].name; i++)
symbol_table_insert (symbol_new (reg_names[i].name, reg_section,
- reg_names[i].num, // & RNUM_MASK,
+ reg_names[i].num, /* & RNUM_MASK, */
&zero_address_frag));
if (HAVE_NEWABI)
for (i = 0; reg_names_n32n64[i].name; i++)
symbol_table_insert (symbol_new (reg_names_n32n64[i].name, reg_section,
- reg_names_n32n64[i].num, // & RNUM_MASK,
+ reg_names_n32n64[i].num, /* & RNUM_MASK, */
&zero_address_frag));
else
for (i = 0; reg_names_o32[i].name; i++)
symbol_table_insert (symbol_new (reg_names_o32[i].name, reg_section,
- reg_names_o32[i].num, // & RNUM_MASK,
+ reg_names_o32[i].num, /* & RNUM_MASK, */
&zero_address_frag));
mips_no_prev_insn ();
diff -ru binutils-2.18.orig/gas/config/tc-score.c binutils-2.18/gas/config/tc-score.c
--- binutils-2.18.orig/gas/config/tc-score.c 2007-08-06 13:00:04.000000000 -0700
+++ binutils-2.18/gas/config/tc-score.c 2008-10-19 06:10:21.000000000 -0700
@@ -4626,8 +4626,8 @@
unsigned len = strlen (insn->template);
struct asm_opcode *new;
char *template;
- new = obstack_alloc (&insn_obstack, sizeof (struct asm_opcode));
- template = obstack_alloc (&insn_obstack, len + 1);
+ new = (void *) obstack_alloc (&insn_obstack, sizeof (struct asm_opcode));
+ template = (void *) obstack_alloc (&insn_obstack, len + 1);
strcpy (template, insn->template);
new->template = template;
@@ -4653,8 +4653,8 @@
unsigned len = strlen (tmp->insn_name);
struct insn_to_dependency *new;
- new = obstack_alloc (&dependency_obstack, sizeof (struct insn_to_dependency));
- new->insn_name = obstack_alloc (&dependency_obstack, len + 1);
+ new = (void *) obstack_alloc (&dependency_obstack, sizeof (struct insn_to_dependency));
+ new->insn_name = (void *) obstack_alloc (&dependency_obstack, len + 1);
strcpy (new->insn_name, tmp->insn_name);
new->type = tmp->type;
diff -ru binutils-2.18.orig/gas/hash.c binutils-2.18/gas/hash.c
--- binutils-2.18.orig/gas/hash.c 2007-08-06 12:59:51.000000000 -0700
+++ binutils-2.18/gas/hash.c 2008-10-19 06:10:04.937500000 -0700
@@ -116,7 +116,7 @@
ret = xmalloc (sizeof *ret);
obstack_begin (&ret->memory, chunksize);
alloc = size * sizeof (struct hash_entry *);
- ret->table = obstack_alloc (&ret->memory, alloc);
+ ret->table = (void *) obstack_alloc (&ret->memory, alloc);
memset (ret->table, 0, alloc);
ret->size = size;
diff -ru binutils-2.18.orig/gas/subsegs.c binutils-2.18/gas/subsegs.c
--- binutils-2.18.orig/gas/subsegs.c 2007-08-06 12:59:51.000000000 -0700
+++ binutils-2.18/gas/subsegs.c 2008-10-19 06:10:05.171875000 -0700
@@ -103,7 +103,7 @@
{
/* This should be the only code that creates a frchainS. */
- newP = obstack_alloc (&frchains, sizeof (frchainS));
+ newP = (void *) obstack_alloc (&frchains, sizeof (frchainS));
newP->frch_subseg = subseg;
newP->fix_root = NULL;
newP->fix_tail = NULL;
diff -ru binutils-2.18.orig/gas/symbols.c binutils-2.18/gas/symbols.c
--- binutils-2.18.orig/gas/symbols.c 2007-08-06 12:59:51.000000000 -0700
+++ binutils-2.18/gas/symbols.c 2008-10-19 06:10:05.218750000 -0700
@@ -563,7 +563,7 @@
orgsymP = local_symbol_convert ((struct local_symbol *) orgsymP);
bsymorg = orgsymP->bsym;
- newsymP = obstack_alloc (¬es, sizeof (*newsymP));
+ newsymP = (void *) obstack_alloc (¬es, sizeof (*newsymP));
*newsymP = *orgsymP;
bsymnew = bfd_make_empty_symbol (bfd_asymbol_bfd (bsymorg));
if (bsymnew == NULL)
@@ -1880,7 +1880,7 @@
instance_number = (10 * instance_number) + *p - '0';
message_format = _("\"%d\" (instance number %d of a %s label)");
- symbol_decode = obstack_alloc (¬es, strlen (message_format) + 30);
+ symbol_decode = (void *) obstack_alloc (¬es, strlen (message_format) + 30);
sprintf (symbol_decode, message_format, label_number, instance_number, type);
return symbol_decode;
diff -ru binutils-2.18.orig/gas/write.c binutils-2.18/gas/write.c
--- binutils-2.18.orig/gas/write.c 2007-08-06 12:59:51.000000000 -0700
+++ binutils-2.18/gas/write.c 2008-10-19 06:10:05.281250000 -0700
@@ -148,7 +148,7 @@
n_fixups++;
- fixP = obstack_alloc (¬es, sizeof (fixS));
+ fixP = (void *) obstack_alloc (¬es, sizeof (fixS));
fixP->fx_frag = frag;
fixP->fx_where = where;
diff -ru binutils-2.18.orig/ld/ldlang.c binutils-2.18/ld/ldlang.c
--- binutils-2.18.orig/ld/ldlang.c 2007-08-06 13:00:21.000000000 -0700
+++ binutils-2.18/ld/ldlang.c 2008-10-19 06:10:11.625000000 -0700
@@ -1851,7 +1851,7 @@
else if (!ud->map_symbol_def_tail)
ud->map_symbol_def_tail = &ud->map_symbol_def_head;
- def = obstack_alloc (&map_obstack, sizeof *def);
+ def = (void *) obstack_alloc (&map_obstack, sizeof *def);
def->entry = hash_entry;
*(ud->map_symbol_def_tail) = def;
ud->map_symbol_def_tail = &def->next;
Thanks,
- Jay
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: diff2.txt
URL: <https://sourceware.org/pipermail/binutils/attachments/20081019/38c35855/attachment.txt>
More information about the Binutils
mailing list