summaryrefslogtreecommitdiff
path: root/ppc-amigaos/recipes/patches/binutils/0003-Disabled-some-stuff-such-that-68k-vtarget-builds-aga.p
blob: 92cec94e7ad264f6b43cf69526daa768773a9a81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
From be1c62376ea16552979036768972be85ca66c9ed Mon Sep 17 00:00:00 2001
From: Sebastian Bauer <mail@sebastianbauer.info>
Date: Tue, 17 Mar 2015 19:30:24 +0100
Subject: [PATCH 3/8] Disabled some stuff such that 68k vtarget builds again.

This doesn't imply that it is working.
---
 gas/config/tc-m68k.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/gas/config/tc-m68k.c b/gas/config/tc-m68k.c
index 8b5f6c60f2141ee91d6e9d1d639815abdf4e5042..9070a862b9c1266e84a8cea8da697f333227fa98 100644
--- gas/config/tc-m68k.c
+++ gas/config/tc-m68k.c
@@ -5158,22 +5158,22 @@ md_convert_frag_1 (fragS *fragP)
     case TAB (BRANCHBWPL, LONG):
       /* Here we are converting an unconditional branch into a pair of
 	 conditional branches, in order to get the range.  */
       fragP->fr_opcode[0] = 0x66; /* bne */
       fragP->fr_opcode[1] = 0xFF;
       fixP = fix_new (fragP, fragP->fr_fix, 4, fragP->fr_symbol,
-		      fragP->fr_offset, 1, RELAX_RELOC_PC32);
+		      fragP->fr_offset, 1, RELAX_RELOC_PC32, 0);
       fixP->fx_file = fragP->fr_file;
       fixP->fx_line = fragP->fr_line;
       fragP->fr_fix += 4;  /* Skip first offset */
       buffer_address += 4;
       *buffer_address++ = 0x67; /* beq */
       *buffer_address++ = 0xff;
       fragP->fr_fix += 2;  /* Skip second branch opcode */
       fixP = fix_new (fragP, fragP->fr_fix, 4, fragP->fr_symbol,
-		      fragP->fr_offset, 1, RELAX_RELOC_PC32);
+		      fragP->fr_offset, 1, RELAX_RELOC_PC32, 0);
       fragP->fr_fix += 4;
       break;
     case TAB (BRABSJUNC, LONG):
       if (flag_small_code)
 	{
 	  as_bad (_("Long branch in small code model, not supported."));
@@ -5348,12 +5348,14 @@ md_convert_frag_1 (fragS *fragP)
       fragP->fr_fix += 4;
       break;
     case TAB (ABSREL, BYTE):
       as_bad (_("ABSREL_BYTE: how the ** does this look??"));
       break;
     case TAB (ABSREL, SHORT):
+      as_bad (_("ABSREL_SHORT: sorry, not supported. See" __FILE__));
+#if 0
       fragP->fr_opcode[1] &= ~0x3f;
       fragP->fr_fix += 2;
       if (S_GET_TYPE (fragP->fr_symbol) == N_TEXT)
 	{
 	  /* so this is really a pc-relative address */
 	  fragP->fr_opcode[1] |= 0x3a;
@@ -5362,20 +5364,23 @@ md_convert_frag_1 (fragS *fragP)
 	}
       /* in that case we have to generate base-relative code
        * (note: if we're in N_UNDF, this could as well be pc-relative, but the linker
        *        will have to do the final patch in that case) */
       fragP->fr_opcode[1] |= 0x2c;  /* (a4) */
       fix_new (fragP, fragP->fr_fix, 2, fragP->fr_symbol, fragP->fr_offset, 0, NO_RELOC, 1);
+#endif
       break;
     case TAB (ABSREL, LONG):
       as_bad (_("ABSREL_LONG: sorry, not supported."));
       break;
     case TAB (IMMREL, BYTE):
       as_bad (_("IMMREL_BYTE: how the ** does this look??"));
       break;
     case TAB (IMMREL, SHORT):
+      as_bad (_("IMMREL_SHORT: sorry, not supported. See " __FILE__));
+#if 0
       if (S_GET_TYPE (fragP->fr_symbol) == N_TEXT)
 	{
 	/* we can only fix operations on data registers, not on <ea> */
 	if ((fragP->fr_opcode[1] & 0x38) != 0)
 	  {
 	    /* use the normal reloc32, sigh... */
@@ -5415,12 +5420,13 @@ md_convert_frag_1 (fragS *fragP)
        *     addl a4,d0
        */
 
       fix_new (fragP, fragP->fr_fix, 4, fragP->fr_symbol, fragP->fr_offset, 0, NO_RELOC, 1);
       *buffer_address++ = 0xd0;
       *buffer_address++ = 0x8c;
+#endif
       break;
     }
   if (fixP)
     {
       fixP->fx_file = fragP->fr_file;
       fixP->fx_line = fragP->fr_line;
@@ -8302,13 +8308,13 @@ m68k_elf_cons (int nbytes /* 4=.long */)
 
 	      p = frag_more (nbytes);
 	      offset = 0;
 	      if (target_big_endian)
 		offset = nbytes - size;
 	      fix_new_exp (frag_now, p - frag_now->fr_literal + offset, size,
-			   &exp, 0, reloc);
+			   &exp, 0, reloc, 0);
 	    }
 	}
       else
 	emit_expr (&exp, (unsigned int) nbytes);
     }
   while (*input_line_pointer++ == ',');
-- 
2.11.0