Linker Tasks

 

Using Linker commands

obj_files

The name of the object file or files that will be linked

 

together to create dest_file.

dest_file

The name of the resulting object module that will by

 

dynamically linked and loaded by base_prog.

As described in Step 1 in “Overview of Dynamic Linking” at the start of this section, you can either guess at how much space will be required to load a module, or you can try to be more accurate. The advantage of the former approach is that it is much easier and probably adequate in most cases; the advantage of the latter is that it results in less memory fragmentation and could be a better approach if you have multiple modules to load throughout the course of program execution.

The alloc_load_space function allocates only the required amount of space. To determine how much memory is required, alloc_load_space performs these steps:

1.Pre-link the specified obj_files to create base_prog.

2.Get text, data, and bss segment location and size information to determine how much space to allocate.

3.Return a pointer to the space. (The address of the space is adjusted to begin on a memory page boundary — that is, a 4096-byte boundary.)

“C Source for alloc_load_space Function” shows the source for this function.

C Source for alloc_load_space Function

void * alloc_load_space(const char * base_prog, const char * obj_files, const char * dest_file)

{

 

 

 

 

char cmd_buf[256];

/* linker command line

*/

int ret_val;

/* value returned by various lib calls

*/

size_t

space;

/* size of space to allocate for module

*/

size_t

addr;

/* address of allocated space

*/

size_t

bss_size;

/* size of bss (uninitialized data)

*/

FILE *

destfp;

/* file pointer for dest_file

*/

struct

som_exec_auxhdr aux_hdr;

/* file header

*/

unsigned int tdb_size; /* size of text, data, and bss combined */ /* ---------------------------------------------------------------

*STEP 1: Pre-link the destination module so we can get its size:

*/

sprintf(cmd_buf, “/bin/ld -a archive -R80000 -A %s -N %s -o %s -lc”, base_prog, obj_files, dest_file);

if (ret_val = system(cmd_buf)) {

Chapter 3

73

Page 73
Image 73
Kenwood HP 9000 manual Using Linker commands, Source for allocloadspace Function

HP 9000 specifications

The Kenwood HP 9000 is a cutting-edge home appliance designed for culinary enthusiasts seeking to elevate their cooking experience. This powerful kitchen machine stands out for its multi-functionality, combining the roles of a food processor, blender, and mixer into one sleek unit.

One of the flagship features of the Kenwood HP 9000 is its robust motor, which delivers exceptional performance across various tasks. With a powerful motor that operates at multiple speeds, users can tackle everything from kneading dough to finely chopping vegetables with ease. The variable speed control allows for precision, ensuring that every ingredient is processed to perfection according to individual preferences.

The HP 9000 comes equipped with a variety of attachments that enhance its versatility. Among these are a stainless-steel mixing bowl, a dough hook, a whisk, and multiple cutting blades. This extensive array of accessories means that users can whip up delightful pastries, create homemade pasta, or prepare smoothies with minimal hassle. Each attachment is designed for easy attachment and removal, making the transition between tasks seamless and efficient.

Another key characteristic of the Kenwood HP 9000 is its advanced safety features. The design incorporates mechanisms that prevent the machine from operating unless all components are securely in place. This not only gives users peace of mind while cooking but also ensures longevity for the appliance, reducing the risk of wear and tear over time.

In terms of design, the HP 9000 is both modern and aesthetically pleasing. Its ergonomic shape and compact size make it easy to store and use in various kitchen settings, while the high-quality materials used in its construction guarantee durability and longevity. The user interface is intuitive, with clearly labeled buttons that facilitate operation, ensuring that even novice cooks can navigate the machine effortlessly.

Additionally, the Kenwood HP 9000 features innovative technologies, such as an integrated digital timer and a pulse function for added control during food preparation. These features enhance cooking precision, allowing users to achieve consistent results every time.

In summary, the Kenwood HP 9000 is an exceptional kitchen appliance that combines power, versatility, and safety. With its advanced features and user-friendly design, it is an ideal choice for anyone looking to simplify their cooking process while achieving professional-level results. Whether you're whipping up a quick meal or tackling an elaborate recipe, the HP 9000 is a reliable companion that will inspire culinary creativity.