Commit Graph

20 Commits

Author SHA1 Message Date
Stephen Heumann
8aa3c4e8c7 Give error about excessive alignment at the right time.
The error "Alignment factor must not exceed segment align factor" is now given when an ALIGN record with greater alignment than its segment is encountered. (This is the error that was given erroneously in other circumstances before the last commit.)
2021-03-03 22:53:57 -06:00
Stephen Heumann
aa9a585d19 Do not give spurious errors about segment alignment.
This would happen if a later object segment had a more restrictive alignment than previous object segments that contribute to the same load segment, as in the following example:

s1      start
        jsl s2
        rtl
        end

        align   256
s2      start
        rtl
        end

These alignment requirements can be satisfied by just giving the load segment the most restrictive alignment of any object segment (since all alignments are powers of 2) and inserting space as necessary to align the code from each object segment.
2021-03-03 18:41:45 -06:00
Stephen Heumann
d62fdba4bb Update linker release notes. 2021-02-25 22:31:29 -06:00
Stephen Heumann
2275b137d8 Update linker version number to 2.0.6. 2021-02-25 22:29:56 -06:00
Stephen Heumann
76ba56a36b Allow 2-byte RELEXPR records to be used for branches of + or - 64KB.
Previously, the linker gave an error if the relative displacement was more than + or - 32 KB. But 2-byte RELEXPR records are typically used for the operand of the BRL instruction, and since its address calculation wraps around within the program bank, it can effectively address + or - 64KB (i.e. any location within the program bank). Similar reasoning applies to PER, the other instruction using long relative addressing.

This would give an error in code like the following:

bigbrl  start
        brl     later
        ds      33000  ; realistic examples would have actual code here
later   rtl
        end

(This currently also gives an assembler error due to similar logic in ORCA/M, but the output file can be linked anyway.)

This issue can affect very large functions compiled with ORCA/C or ORCA/Pascal, which may sometimes have branches that go more than 32 KB forward or back.
2021-02-19 18:18:47 -06:00
Stephen Heumann
42734c7433 Update linker release notes. 2018-09-15 16:40:45 -05:00
Stephen Heumann
1a643585e8 Update linker version number to 2.0.5. 2018-09-15 16:40:23 -05:00
Stephen Heumann
170fa09ecc Search for object files under both lower- and upper-case extensions.
This enables the linker to work correctly with object files with either extension case (or a mix), so it can work with objects from any of the ORCA languages even on a case-sensitive filesystem.

If two object files differ only in the case of their extension, the one with the lower-case extension will be used, and the one with the upper-case extension will be ignored.
2018-09-15 16:20:18 -05:00
Stephen Heumann
433b4652d7 Accept DVR, LDF, and FST as valid KeepType values.
Note that ORCA/Shell listings use DRV for type $BB, but the File Type Notes specify DVR.
2018-09-13 18:14:09 -05:00
MikeW50
2cdbebe6e6
Merge pull request #4 from ksherlock/ci-update
use lowercase extensions (.root, .a, etc)
2018-03-25 15:35:09 -06:00
MikeW50
9bca07851b
Merge pull request #2 from ksherlock/gg_support
add makefile and build.ninja file for use with Golden Gate.
2018-03-25 15:34:20 -06:00
Kelvin Sherlock
a8528f35b7 use lowercase extensions (.root, .a, etc) for better compatibility with case-sensitive file systems
(ORCA/C and ORCA/Pascal use lowercase extensions for object files. ORCA/M uses uppercase extensions for object files)
2018-01-02 21:35:34 -05:00
Kelvin Sherlock
1ec542fde5 fix typos. 2017-10-23 09:32:39 -04:00
Stephen Heumann
346516654c Update linker release notes. 2017-10-21 22:29:39 -05:00
Stephen Heumann
3099720543 Update linker version number to 2.0.4. 2017-10-21 22:29:26 -05:00
Stephen Heumann
7328e38c27 Fix bug in handling of pathname buffers at the very beginning of a bank. 2017-10-08 20:47:06 -05:00
Stephen Heumann
877e84cdb3 Fix bugs in handling of symbol table entries at the very beginning of a bank.
These bugs could manifest themselves as (at least) bogus "Addressing error" or "expression too complex" messages.
2017-10-08 20:46:55 -05:00
Kelvin Sherlock
ce65f20394 add makefile and ninja file for use with Golden Gate. 2017-10-02 16:01:45 -04:00
Kelvin Sherlock
c21ae46a4d convert CR files to LF for better git compatibility. 2017-10-02 09:35:05 -04:00
mikew50
748ae356d7 The ORCA Linker 2.0.3 from the Opus ][ CD 2017-10-01 21:26:59 -06:00