content here.
content here.

Documentation Errata for VisualDSP++ 4.5 C/C++ Compiler and Library Manual for SHARC Processors (Revision 6.0, April 2006)


Chapter:  1 Page: 54
Reference Number: 29603
Change
Change the following text from:
-path {-asm | -compiler | -lib | -link | -mem} filename
The -path -{asm|compiler|lib|link|mem} switch directs the compiler to use the specified component in place of the default-installed version of the compilation tool. The component comprises a relative or absolute path to its location. Respectively, the tools are the assembler, compiler, librarian, linker or memory initializer. Use this switch when overriding the normal version of one or more of the tools. The -path-{asm|compiler|lib|link|mem} switch also overrides the directory specified by the -path-install switch

to

-path {-asm | -compiler | -lib | -link } filename
The -path -{asm|compiler|lib|link} switch directs the compiler to use the specified component in place of the default-installed version of the compilation tool. The component comprises a relative or absolute path to its location. Respectively, the tools are the assembler, compiler, librarian, linker or memory initializer. Use this switch when overriding the normal version of one or more of the tools. The -path-{asm|compiler|lib|link} switch also overrides the directory specified by the -path-install switch

back to top


Chapter:  1 Page: 54
Reference Number: 30058
Change
Delete the following text:
progress-rep-gen-opt
The -progress-rep-gen-opt switch provides feedback on the compiler’s progress that may be useful when compiling and optimizing a very large, complex function. It issues a “warning” message each time the compiler starts a new generic optimization pass on the current function. T he “warning” message is a remark that is disabled by default, and this switch enables the remark as a warning. The switch is equivalent to -Wwarn=cc1473.
-progress-rep-mc-opt
The -progress-rep-mc-opt switch provides feedback on the compiler’s progress that may be useful when compiling and optimizing a very large, complex function. It issues a “warning” message each time the compiler starts a new machine-specific optimization pass on the current function. The “warning” message is a remark that is disabled by default, and this switch enables the remark as a warning. The switch is equivalent to -Wwarn=cc1474.

and replace it with

-progress-rep-opt
The -progress-rep-opt switch provides feedback on the compiler’s progress that may be useful when compiling and optimizing a very large, complex function. It issues a warning message each time the compiler starts a new optimization pass on the current function. The warning mes­sage is a remark that is disabled by default, and this switch enables the remark as a warning. The switch is equivalent to -Wwarn=cc1473.

back to top


Chapter:  1 Page: 54
Reference Number: 30063
Change
Insert the following text:
-progress-rep-timeout
The -progress-rep-timeout switch issues a diagnostic message if the compiler exceeds a time limit during compilation. This indicates the compiler is still operating, just taking a long time.
-progress-rep-timeout-secs
The -progress-rep-timeout-secs switch specifies how many seconds must elapse during a compilation before the compiler issues a diagnostic message about the length of time the compilation has used so far.

back to top


Chapter:  1 Page: 140
Reference Number: 29181
Change
Change the following text from
struct foo make-foo(int x, char *s)

to

struct foo make_foo(int x, char *s)

back to top


Chapter:  1 Page: 222
Reference Number: 28958
Change
Change the following text from
As an example, a compiler with version 7.1.0.0 defines __VERSIONNUM__ as 0x07000100 and 7.1.1.10 would define __VERSIONNUM__ to be 0x0701010A.

to

As an example, a compiler with version 7.1.0.0 defines __VERSIONNUM__ as 0x07010000 and 7.1.1.10 would define __VERSIONNUM__ to be 0x0701010A.

back to top


Chapter:  1 Page: 264
Reference Number: 30085
Change
Change the following line from:
seg_pmda{TYPE(DM RAM) START(0x28000) END(0x28fff) WIDTH(32)}
to
seg_pmda{TYPE(PM RAM) START(0x28000) END(0x28fff) WIDTH(32)}

back to top


Chapter:  1 Page: 271
Reference Number: 30624
Change
In the information bullet at the bottom of the page, delete the following text:
When you reserve a register, you are asking the compiler to avoid using the register. If the compiler requires a register you have reserved, the compiler ignores your reservation request.

back to top


Chapter:  1 Page: 297
Reference Number: 30068
Change
Correct this typo from
When generating dependencies, the compiler will only parse each implicitly included .cpp file once. This parsing avoids excessive compilation times in situations where a header file that implicity includes a source file is included several times.

to

When generating dependencies, the compiler will only parse each implicitly included .cpp file once. This parsing avoids excessive compilation times in situations where a header file that implicitly includes a source file is included several times.

back to top


Chapter:  3 Page: 31
Reference Number: 29519
Change
Insert this following section after the section Calling Library Functions on ISR:

Using the Libraries in a Multi-Threaded Environment
It is sometimes desirable for there to be several instances of a given library function to be active at any one time. Two examples of such a requirement are:

an interrupt or other external event invokes a function, while the application is also executing that function,
an application that runs in a multi-threaded environment, such as VDK, and more than one thread executes the function concurrently.

The majority of the functions in the C and C++ run-time libraries are safe in this regard and may be called in either of the above schemes; this is because the functions operate on parameters passed in by the caller and they do not maintain private static storage, and they do not access non-constant global data.

A subset of the library functions however either make use of pri­vate storage or they operate on shared resources (such as FILE pointers). This can lead to undefined behavior if two instances of a function simultaneously access the same data. The issues associated with calling such library functions via an interrupt or other external event is discussed in the section "Calling Library Functions from ISR" on page 1-30. 

A VisualDSP++ installation contains versions of the C and C++ libraries that may be used in a multi-threaded environment. These librar­ies have recursive locking mechanisms so that shared resources, such as stdio FILE tables and buffers, are only updated by a single function instance at any given time. The libraries also make use of local-storage routines for thread-local private copies of data, and for the variable errno (each thread therefore has its own copy of errno).

The multi-threaded libraries have “mt” in their filename and will be used automatically by the default VDK .ldf file to build a multi-threaded application.

Note that the DSP run-time library (which is described in Chapter 2 and Chapter 3 ) is thread-safe and may be used in any multi-threaded environment.

back to top


Chapter:  3 Page: 131
Reference Number: 29773
Change

The fread function requires the following additional paragraphs:

Normally binary streams are a bit-exact mirror image of the processor's memory such that data that is written out to a binary stream can be later read back in unmodified. The size of a binary file on TigerSHARC is therefore normally a multiple of 32-bit words when word-addressing mode is enabled.

When word addressing mode is enabled and the size of a file is not a multiple of four then fread will behave as if the file was padded out by a sufficient number of trailing null characters to bring the size of the file up to the next multiple of 32-bit words."

back to top


Chapter:  3 Page: 204
Reference Number: 29999
Change
The example for the longjmp function has a coding error (it uses "==" instead of "="). The effect is that res does not get set to the return value of setjmp and the if condition evaluates to true when it is expected to be false.
Change the example from:
#include
#include
#include
#include
jmp_buf env;
int res;

if ((res == setjmp(env)) != 0) {
    printf ("Problem %d reported by func ()", res);
    exit (EXIT_FAILURE);
}
func ();
void func (void)
{
    if (errno != 0) {
        longjmp (env, errno);
    }
}

To:
#include
#include
#include
#include

jmp_buf env;
int res;
void func (void);

main() {
  if ((res = setjmp(env)) != 0) {
    printf ("Problem %d reported by func ()\n", res);
    exit (EXIT_FAILURE);
  }
  func();
}

void func (void) {
    if (errno != 0) {
        longjmp (env, errno);
    }
}

back to top


Chapter: I Page: 1
Reference Number: 30061
Change
Insert the following text:
alternative tokens    disabling, 1-45    enabling, 1-27

back to top


Last Updated: June 03, 2008