History

OpenBSD: arm support (WIP)

herman ten brugge committed 5 years ago

Commit 23989cb1 parent d5c78ce3 files · +22 −2Browse files

Unified · Split

3 files
  1. arm-link.c +18 −0
  2. lib/bcheck.c +2 −2
  3. tccelf.c +2 −0
arm-link.c+18−0
@@ -46,6 +46,8 @@ int code_reloc (int reloc_type) · 45 unmodified lines
46 case R_ARM_GLOB_DAT:46 case R_ARM_GLOB_DAT:
47 case R_ARM_NONE:47 case R_ARM_NONE:
48 case R_ARM_TARGET1:48 case R_ARM_TARGET1:
49 case R_ARM_MOVT_PREL:
50 case R_ARM_MOVW_PREL_NC:
49 return 0;51 return 0;
50 52
51 case R_ARM_PC24:53 case R_ARM_PC24:
@@ -89,6 +91,8 @@ int gotplt_entry_type (int reloc_type) · 37 unmodified lines
89 case R_ARM_REL32:91 case R_ARM_REL32:
90 case R_ARM_V4BX:92 case R_ARM_V4BX:
91 case R_ARM_TARGET1:93 case R_ARM_TARGET1:
94 case R_ARM_MOVT_PREL:
95 case R_ARM_MOVW_PREL_NC:
92 return AUTO_GOTPLT_ENTRY;96 return AUTO_GOTPLT_ENTRY;
93 97
94 case R_ARM_GOTPC:98 case R_ARM_GOTPC:
@@ -332,6 +336,20 @@ void relocate(TCCState *s1, ElfW_Rel *rel, int type, unsigned char *ptr, addr_t · 237 unmodified lines
332 *(int *)ptr += x;336 *(int *)ptr += x;
333 }337 }
334 return;338 return;
339 case R_ARM_MOVT_PREL:
340 case R_ARM_MOVW_PREL_NC:
341 {
342 int insn = *(int *)ptr;
343 int addend = ((insn >> 4) & 0xf000) | (insn & 0xfff);
344
345 addend = (addend ^ 0x8000) - 0x8000;
346 val += addend - addr;
347 if (type == R_ARM_MOVT_PREL)
348 val >>= 16;
349 *(int *)ptr = (insn & 0xfff0f000) |
350 ((val & 0xf000) << 4) | (val & 0xfff);
351 }
352 return;
335 case R_ARM_THM_MOVT_ABS:353 case R_ARM_THM_MOVT_ABS:
336 case R_ARM_THM_MOVW_ABS_NC:354 case R_ARM_THM_MOVW_ABS_NC:
337 {355 {
lib/bcheck.c+2−2
@@ -289,7 +289,7 @@ DLL_EXPORT char *__bound_strcat(char *dest, const char *src); · 288 unmodified lines
289DLL_EXPORT char *__bound_strchr(const char *string, int ch);289DLL_EXPORT char *__bound_strchr(const char *string, int ch);
290DLL_EXPORT char *__bound_strdup(const char *s);290DLL_EXPORT char *__bound_strdup(const char *s);
291 291
292#if defined(__arm__)292#if defined(__arm__) && defined(TCC_ARM_EABI)
293DLL_EXPORT void *__bound___aeabi_memcpy(void *dst, const void *src, size_t size);293DLL_EXPORT void *__bound___aeabi_memcpy(void *dst, const void *src, size_t size);
294DLL_EXPORT void *__bound___aeabi_memmove(void *dst, const void *src, size_t size);294DLL_EXPORT void *__bound___aeabi_memmove(void *dst, const void *src, size_t size);
295DLL_EXPORT void *__bound___aeabi_memmove4(void *dst, const void *src, size_t size);295DLL_EXPORT void *__bound___aeabi_memmove4(void *dst, const void *src, size_t size);
@@ -1738,7 +1738,7 @@ void *__bound_memset(void *s, int c, size_t n) · 1442 unmodified lines
1738 return memset(s, c, n);1738 return memset(s, c, n);
1739}1739}
1740 1740
1741#if defined(__arm__)1741#if defined(__arm__) && defined(TCC_ARM_EABI)
1742void *__bound___aeabi_memcpy(void *dest, const void *src, size_t n)1742void *__bound___aeabi_memcpy(void *dest, const void *src, size_t n)
1743{1743{
1744 dprintf(stderr, "%s, %s(): %p, %p, 0x%lx\n",1744 dprintf(stderr, "%s, %s(): %p, %p, 0x%lx\n",
tccelf.c+2−0
@@ -1387,6 +1387,8 @@ ST_FUNC void tcc_add_btstub(TCCState *s1) · 1386 unmodified lines
1387 CString cstr;1387 CString cstr;
1388 1388
1389 s = data_section;1389 s = data_section;
1390 /* Align to PTR_SIZE */
1391 section_ptr_add(s, -s->data_offset & (PTR_SIZE - 1));
1390 o = s->data_offset;1392 o = s->data_offset;
1391 /* create (part of) a struct rt_context (see tccrun.c) */1393 /* create (part of) a struct rt_context (see tccrun.c) */
1392 put_ptr(s1, stab_section, 0);1394 put_ptr(s1, stab_section, 0);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t