Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
emacs
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
1
Issues
1
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
emacs
emacs
Commits
043131c4
Commit
043131c4
authored
Oct 31, 2003
by
Andrew Choi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
These are Nozomu Ando's changes to build Emacs to run under X Window
in Mac OS X without the need to use static X11 libraries.
parent
6d59ebc3
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
90 additions
and
17 deletions
+90
-17
mac/ChangeLog
mac/ChangeLog
+6
-0
mac/INSTALL
mac/INSTALL
+3
-13
src/ChangeLog
src/ChangeLog
+6
-0
src/unexmacosx.c
src/unexmacosx.c
+75
-4
No files found.
mac/ChangeLog
View file @
043131c4
2003-10-31 Andrew Choi <akochoi@shaw.ca>
* INSTALL: Add Nozomu Ando's changes to instructions for
installing on X Window (that static libraries are no longer
necessary after his changes to src/unexmacosx.c).
2003-04-28 Andrew Choi <akochoi@shaw.ca>
* make-package: Allocate 5% extra space on disk image for
...
...
mac/INSTALL
View file @
043131c4
...
...
@@ -58,16 +58,11 @@ must be typed to the shell to enable Emacs to locate its resources
correctly. You may want to create a symlink or alias to this path to
quickly access both the terminal and GUI versions.
If you are building Emacs to run on Mac OS X and X Window,
you need to
create a directory containing statically-linked X libraries.
If you are building Emacs to run on Mac OS X and X Window,
instead of typing `./configure' above, type
sudo mkdir /usr/X11R6/libstatic
cd /usr/X11R6/libstatic
sudo ln -s ../lib/lib*.a ../lib/X11 .
./configure --without-carbon --with-x
Instead of typing `./configure' above, type
./configure --without-carbon --with-x --x-libraries=/usr/X11R6/libstatic
To use colors in a terminal, put the following lines in the file
~/.termcap and log in again.
...
...
@@ -159,11 +154,6 @@ options to user
$prefix/bin/emacs to reduce disk space. Note, this
option may removed in the future.
If you are intending to build a binary distribution for X windows, you
will probably want to follow the directions above to create static
X11R6 libraries and run the make-package script like this
./make-package --with-x -C,--x-libraries=/usr/X11R6/libstatic
For usage of other options, use the --help option.
...
...
src/ChangeLog
View file @
043131c4
2003-10-31 Andrew Choi <akochoi@shaw.ca>
* unexmacosx.c (unrelocate): New function (contributed by Nozomu
Ando).
(copy_dysymtab): Call it.
2003-10-31 Luc Teirlinck <teirllm@auburn.edu>
* eval.c (Fdefvaralias): Doc fix.
...
...
src/unexmacosx.c
View file @
043131c4
...
...
@@ -95,6 +95,10 @@ Boston, MA 02111-1307, USA. */
#include <unistd.h>
#include <mach/mach.h>
#include <mach-o/loader.h>
#include <mach-o/reloc.h>
#if defined (__ppc__)
#include <mach-o/ppc/reloc.h>
#endif
#include <objc/malloc.h>
#define VERBOSE 1
...
...
@@ -158,6 +162,11 @@ int in_dumped_exec = 0;
malloc_zone_t
*
emacs_zone
;
/* file offset of input file's data segment */
off_t
data_segment_old_fileoff
;
struct
segment_command
*
data_segment_scp
;
/* Read n bytes from infd into memory starting at address dest.
Return true if successful, false otherwise. */
static
int
...
...
@@ -763,6 +772,65 @@ copy_symtab (struct load_command *lc)
curr_header_offset
+=
lc
->
cmdsize
;
}
/* Fix up relocation entries. */
static
void
unrelocate
(
const
char
*
name
,
off_t
reloff
,
int
nrel
)
{
int
i
,
unreloc_count
;
struct
relocation_info
reloc_info
;
struct
scattered_relocation_info
*
sc_reloc_info
=
(
struct
scattered_relocation_info
*
)
&
reloc_info
;
for
(
unreloc_count
=
0
,
i
=
0
;
i
<
nrel
;
i
++
)
{
if
(
lseek
(
infd
,
reloff
,
L_SET
)
!=
reloff
)
unexec_error
(
"unrelocate: %s:%d cannot seek to reloc_info"
,
name
,
i
);
if
(
!
unexec_read
(
&
reloc_info
,
sizeof
(
reloc_info
)))
unexec_error
(
"unrelocate: %s:%d cannot read reloc_info"
,
name
,
i
);
reloff
+=
sizeof
(
reloc_info
);
if
(
sc_reloc_info
->
r_scattered
==
0
)
switch
(
reloc_info
.
r_type
)
{
case
GENERIC_RELOC_VANILLA
:
if
(
reloc_info
.
r_address
>=
data_segment_scp
->
vmaddr
&&
reloc_info
.
r_address
<
(
data_segment_scp
->
vmaddr
+
data_segment_scp
->
vmsize
))
{
off_t
src_off
=
data_segment_old_fileoff
+
reloc_info
.
r_address
-
data_segment_scp
->
vmaddr
;
off_t
dst_off
=
data_segment_scp
->
fileoff
+
reloc_info
.
r_address
-
data_segment_scp
->
vmaddr
;
if
(
!
unexec_copy
(
dst_off
,
src_off
,
1
<<
reloc_info
.
r_length
))
unexec_error
(
"unrelocate: %s:%d cannot copy original value"
,
name
,
i
);
unreloc_count
++
;
}
break
;
default:
unexec_error
(
"unrelocate: %s:%d cannot handle type = %d"
,
name
,
i
,
reloc_info
.
r_type
);
}
else
switch
(
sc_reloc_info
->
r_type
)
{
#if defined (__ppc__)
case
PPC_RELOC_PB_LA_PTR
:
/* nothing to do for prebound lazy pointer */
break
;
#endif
default:
unexec_error
(
"unrelocate: %s:%d cannot handle scattered type = %d"
,
name
,
i
,
sc_reloc_info
->
r_type
);
}
}
if
(
nrel
>
0
)
printf
(
"Fixed up %d/%d %s relocation entries in data segment.
\n
"
,
unreloc_count
,
nrel
,
name
);
}
/* Copy a LC_DYSYMTAB load command from the input file to the output
file, adjusting the file offset fields. */
static
void
...
...
@@ -770,10 +838,8 @@ copy_dysymtab (struct load_command *lc)
{
struct
dysymtab_command
*
dstp
=
(
struct
dysymtab_command
*
)
lc
;
/* If Mach-O executable is not prebound, relocation entries need
fixing up. This is not supported currently. */
if
(
!
(
mh
.
flags
&
MH_PREBOUND
)
&&
(
dstp
->
nextrel
!=
0
||
dstp
->
nlocrel
!=
0
))
unexec_error
(
"cannot handle LC_DYSYMTAB with relocation entries"
);
unrelocate
(
"local"
,
dstp
->
locreloff
,
dstp
->
nlocrel
);
unrelocate
(
"external"
,
dstp
->
extreloff
,
dstp
->
nextrel
);
if
(
dstp
->
nextrel
>
0
)
{
dstp
->
extreloff
+=
delta
;
...
...
@@ -845,6 +911,11 @@ dump_it ()
struct
segment_command
*
scp
=
(
struct
segment_command
*
)
lca
[
i
];
if
(
strncmp
(
scp
->
segname
,
SEG_DATA
,
16
)
==
0
)
{
/* save data segment file offset and segment_command for
unrelocate */
data_segment_old_fileoff
=
scp
->
fileoff
;
data_segment_scp
=
scp
;
copy_data_segment
(
lca
[
i
]);
}
else
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment