Differences From Artifact [1f4ef323c1]:
- File
src/amiga-library.m
— part of check-in
[514944f1ea]
at
2020-06-07 16:34:48
on branch amiga-library
— Pass __sF around instead of std* individually
This avoids needing to #undef std{in,out,err} and then providing a new
symbol. (user: js, size: 11030) [annotate] [blame] [check-ins using]
To Artifact [5d844627f0]:
- File
src/amiga-library.m
— part of check-in
[45a8b2333d]
at
2020-06-07 16:53:31
on branch amiga-library
— Add __(de)register_frame_info to amiga-library.m
This way the runtime's linklib will use the ones passed to the ObjFW
.library. (user: js, size: 11490) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
56 57 58 59 60 61 62 63 64 65 66 67 68 69 | bool initialized; }; #ifdef OF_AMIGAOS_M68K extern uintptr_t __CTOR_LIST__[]; extern const void *_EH_FRAME_BEGINS__; extern void *_EH_FRAME_OBJECTS__; #endif extern bool glue_of_init(void); #ifdef OF_AMIGAOS_M68K void __init_eh(void) | > > | 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | bool initialized; }; #ifdef OF_AMIGAOS_M68K extern uintptr_t __CTOR_LIST__[]; extern const void *_EH_FRAME_BEGINS__; extern void *_EH_FRAME_OBJECTS__; extern void __register_frame_info(const void *, void *); extern void *__deregister_frame_info(const void *); #endif extern bool glue_of_init(void); #ifdef OF_AMIGAOS_M68K void __init_eh(void) |
︙ | ︙ | |||
285 286 287 288 289 290 291 | if (base->parent != NULL) { struct ObjFWBase *parent; #ifdef OF_AMIGAOS_M68K if (base->initialized) for (size_t i = 1; i <= (size_t)_EH_FRAME_BEGINS__; i++) | | | 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 | if (base->parent != NULL) { struct ObjFWBase *parent; #ifdef OF_AMIGAOS_M68K if (base->initialized) for (size_t i = 1; i <= (size_t)_EH_FRAME_BEGINS__; i++) __deregister_frame_info( (&_EH_FRAME_BEGINS__)[i]); #endif parent = base->parent; FreeMem(base->dataSeg - DATA_OFFSET, getDataSize()); FreeMem((char *)base - base->library.lib_NegSize, |
︙ | ︙ | |||
336 337 338 339 340 341 342 | __sF = sF; #ifdef OF_AMIGAOS_M68K if ((size_t)_EH_FRAME_BEGINS__ != (size_t)_EH_FRAME_OBJECTS__) return false; for (size_t i = 1; i <= (size_t)_EH_FRAME_BEGINS__; i++) | | | 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 | __sF = sF; #ifdef OF_AMIGAOS_M68K if ((size_t)_EH_FRAME_BEGINS__ != (size_t)_EH_FRAME_OBJECTS__) return false; for (size_t i = 1; i <= (size_t)_EH_FRAME_BEGINS__; i++) __register_frame_info((&_EH_FRAME_BEGINS__)[i], (&_EH_FRAME_OBJECTS__)[i]); iter0 = &__CTOR_LIST__[1]; #elif defined(OF_MORPHOS) __asm__ ( "lis %0, ctors+4@ha\n\t" "la %0, ctors+4@l(%0)\n\t" |
︙ | ︙ | |||
396 397 398 399 400 401 402 403 404 405 406 407 408 409 | va_start(args, fmt); ret = libc.vfprintf(stream, fmt, args); va_end(args); return ret; } int fflush(FILE *restrict stream) { return libc.fflush(stream); } | > > > > > > | 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 | va_start(args, fmt); ret = libc.vfprintf(stream, fmt, args); va_end(args); return ret; } int vfprintf(FILE *restrict stream, const char *restrict fmt, va_list args) { return libc.vfprintf(stream, fmt, args); } int fflush(FILE *restrict stream) { return libc.fflush(stream); } |
︙ | ︙ | |||
492 493 494 495 496 497 498 499 500 501 502 503 504 505 | #else void _Unwind_Resume(void *ex) { libc._Unwind_Resume(ex); } #endif int vsnprintf(char *restrict str, size_t size, const char *restrict fmt, va_list args) { return libc.vsnprintf(str, size, fmt, args); } | > > > > > > > > > > > > > > | 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 | #else void _Unwind_Resume(void *ex) { libc._Unwind_Resume(ex); } #endif #ifdef OF_AMIGAOS_M68K void __register_frame_info(const void *begin, void *object) { libc.__register_frame_info(begin, object); } void *__deregister_frame_info(const void *begin) { return libc.__deregister_frame_info(begin); } #endif int vsnprintf(char *restrict str, size_t size, const char *restrict fmt, va_list args) { return libc.vsnprintf(str, size, fmt, args); } |
︙ | ︙ |