Use linkerscript parser in rgblink

Signed-off-by: AntonioND <antonio_nd@outlook.com>
This commit is contained in:
AntonioND
2017-03-20 23:36:14 +00:00
parent 22d4a10cb6
commit d1ed4fbded
3 changed files with 31 additions and 8 deletions

View File

@@ -35,6 +35,9 @@ extern void CreateSymbolTable(void);
extern SLONG MaxBankUsed;
extern SLONG MaxAvail[MAXBANKS];
void
SetLinkerscriptName(char *tzLinkerscriptFile);
int
IsSectionSameTypeBankAndFloating(const char *name, enum eSectionType type, int bank);

View File

@@ -4,10 +4,11 @@
#include <string.h>
#include "extern/err.h"
#include "link/assign.h"
#include "link/mylink.h"
#include "link/main.h"
#include "link/script.h"
#include "link/symbol.h"
#include "link/assign.h"
struct sFreeArea {
SLONG nOrg;
@@ -338,6 +339,14 @@ AssignFloatingBankSections(enum eSectionType type)
}
}
char *tzLinkerscriptName = NULL;
void
SetLinkerscriptName(char *tzLinkerscriptFile)
{
tzLinkerscriptName = tzLinkerscriptFile;
}
void
AssignSections(void)
{
@@ -415,8 +424,16 @@ AssignSections(void)
}
/*
* First, let's assign all the fixed sections...
* And all because of that Jens Restemeier character ;)
* First, let's parse the linkerscript.
*
*/
if (tzLinkerscriptName) {
script_Parse(tzLinkerscriptName);
}
/*
* Second, let's assign all the fixed sections...
*
*/

View File

@@ -31,12 +31,12 @@ char *progname;
*
*/
static void
static void
usage(void)
{
printf(
"usage: rgblink [-tw] [-m mapfile] [-n symfile] [-O overlay] [-o outfile] \n"
" [-p pad_value] [-s symbol] file [...]\n");
"usage: rgblink [-tw] [-l linkerscript] [-m mapfile] [-n symfile] [-O overlay]\n"
" [-o outfile] [-p pad_value] [-s symbol] file [...]\n");
exit(1);
}
@@ -45,7 +45,7 @@ usage(void)
*
*/
int
int
main(int argc, char *argv[])
{
int ch;
@@ -56,8 +56,11 @@ main(int argc, char *argv[])
progname = argv[0];
while ((ch = getopt(argc, argv, "m:n:o:O:p:s:tw")) != -1) {
while ((ch = getopt(argc, argv, "l:m:n:o:O:p:s:tw")) != -1) {
switch (ch) {
case 'l':
SetLinkerscriptName(optarg);
break;
case 'm':
SetMapfileName(optarg);
break;