Debugging Using DWARF

Total Page:16

File Type:pdf, Size:1020Kb

Debugging Using DWARF Introduction to the DWARF Debugging Format Michael J. Eager, Eager Consulting February, 2007 It would be wonderful if we could write quence of simple operations, registers, difficult time connecting its manipulations programs that were guaranteed to work memory addresses, and binary values of low-level code to the original source correctly and never needed to be debugged. which the processor actually understands. which generated it. Until that halcyon day, the normal pro- After all, the processor really doesn©t care The second challenge is how to describe gramming cycle is going to involve writing whether you used object oriented program- the executable program and its relationship a program, compiling it, executing it, and ming, templates, or smart pointers; it only to the original source with enough detail to then the (somewhat) dreaded scourge of understands a very simple set of operations allow a debugger to provide the program- debugging it. And then repeat until the pro- on a limited number of registers and mem- mer useful information. At the same time, gram works as expected. ory locations containing binary values. the description has to be concise enough so It is possible to debug programs by in- As a compiler reads and parses the that it does not take up an extreme amount serting code that prints values of various in- source of a program, it collects a variety of of space or require significant processor teresting variables. Indeed, in some situa- information about the program, such as the time to interpret. This is where the DWARF tions, such as debugging kernel drivers, this line numbers where a variable or function Debugging Format comes in: it is a compact may be the preferred method. There are is declared or used. Semantic analysis ex- representation of the relationship between low-level debuggers that allow you to step tends this information to fill in details such the executable program and the source in a through the executable program, instruc- as the types of variables and arguments of way that is reasonably efficient for a debug- tion by instruction, displaying registers and functions. Optimizations may move parts of ger to process. memory contents in binary. the program around, combine similar pieces, expand inline functions, or remove But it is much easier to use a source-lev- parts which are unneeded. Finally, code The Debugging el debugger which allows you to step generation takes this internal representa- Process through a program©s source, set break- tion of the program and generates the actu- points, print variable values, and perhaps a hen a programmer runs a program al machine instructions. Often, there is an- few other functions such as allowing you to under a debugger, there are some other pass over the machine code to per- W call a function in your program while in the common operations which he or she may form what are called "peephole" optimiza- debugger. The problem is how to coordi- want to do. The most common of these are tions that may further rearrange or modify nate two completely different programs, setting a breakpoint to stop the debugger at the code, for example, to eliminate dupli- the compiler and the debugger, so that the a particular point in the source, either by cate instructions. program can be debugged. specifying the line number or a function All-in-all, the compiler©s task is to take name. When this breakpoint is hit, then the well-crafted and understandable source the programmer usually would like to dis- Translating from code and convert it into efficient but essen- play the values of local or global variables, Source to tially unintelligible machine language. The or the arguments to the function. Display- better the compiler achieves the goal of cre- ing the call stack lets the programmer know Executable ating tight and fast code, the more likely it how the program arrived at the breakpoint he process of compiling a program is that the result will be difficult to under- in cases where there are multiple execution Tfrom human-readable form into the bi- stand. paths. After reviewing this information, the nary that a processor executes is quite com- programmer can ask the debugger to con- plex, but it essentially involves successively During this translation process, the tinue execution of the program under test. recasting the source into simpler and sim- compiler collects information about the There are a number of additional opera- pler forms, discarding information at each program which will be useful later when tions that are useful in debugging. For ex- step until, eventually, the result is the se- the program is debugged. There are two challenges in doing this well. The first is ample, it may be helpful to be able to step through a program line by line, either en- Michael Eager is Principal Consultant at that in the later parts of this process, it may tering or stepping over called functions. Eager Consulting (www.eagercon.com), be difficult for the compiler to relate the Setting a breakpoint at every instance of a specializing in development tools for changes it is making to the program to the template or inline function can be impor- embedded systems. He was a member original source code that the programmer tant for debugging C++ programs. It can of PLSIG©s DWARF standardization com- wrote. For example, the peephole optimizer be helpful to stop just before the end of a mittee and has been Chair of the may remove an instruction because it was function so that the return value can be dis- DWARF Standards Committee since able to switch around the order of a test in played or changed. Sometimes the pro- 1999. Michael can be contacted at code that was generated by an inline func- grammer may want to bypass execution of [email protected]. tion in the instantiation of a C++ template. a function, returning a known value instead © Eager Consulting, 2006, 2007 By the time it gets its metaphorical hands on the program, the optimizer may have a of what the function would have (possibly Sun extensions. Nonetheless, stabs is still A Brief History of incorrectly) computed. widely used. DWARF2 There are also data related operations COFF stands for Common Object File that are useful. For example, displaying Format and originated with Unix System V the type of a variable can avoid having to Release 3. Rudimentary debugging infor- DWARF 1 ─ Unix SVR4 sdb look up the type in the source files. Dis- mation was defined with the COFF format, and PLSIG playing the value of a variable in different but since COFF includes support for named WARF originated with the C compiler formats, or displaying a memory or register sections, a variety of different debugging Dand sdb debugger in Unix System V in a specified format is helpful. formats such as stabs have been used with Release 4 (SVR4) developed by Bell Labs in COFF. The most significant problem with There are some operations which might the mid-1980s. The Programming Lan- COFF is that despite the Common in its be called advanced debugging functions: guages Special Interest Group (PLSIG), part name, it isn't the same in each architecture for example, being able to debug multi- of Unix International (UI), documented the which uses the format. There are many threaded programs or programs stored in DWARF generated by SVR4 as DWARF 1 in variations in COFF, including XCOFF (used write-only memory. One might want a de- 1989. Although the original DWARF had on IBM RS/6000), ECOFF (used on MIPS bugger (or some other program analysis several clear shortcomings, most notably and Alpha), and the Windows PE-COFF. tool) to keep track of whether certain sec- that it was not very compact, the PLSIG de- Documentation of these variants is avail- tions of code had been executed or not. cided to standardize the SVR4 format with able to varying degrees but neither the ob- Some debuggers allow the programmer to only minimal modification. It was widely ject module format nor the debugging in- call functions in the program being tested. adopted within the embedded sector where formation is standardized. In the not-so-distant past, debugging pro- it continues to be used today, especially for grams that had been optimized would have PE-COFF is the object module format small processors. been considered an advanced feature. used by Microsoft Windows beginning with Windows 95. It is based on the COFF for- DWARF 2 ─ PLSIG The task of a debugger is to provide the mat and contains both COFF debugging programmer with a view of the executing he PLSIG continued on to develop and data and Microsoft's own proprietary Code- program in as natural and understandable document extensions to DWARF to ad- View or CV4 debugging data format. Docu- T fashion as possible, while permitting a wide dress several issues, the most important of mentation on the debugging format is both range of control over its execution. This which was to reduce the amount of data sketchy and difficult to obtain. means that the debugger has to essentially that were generated. There were also addi- reverse much of the compiler's carefully OMF stands for Object Module Format tions to support new languages such as the crafted transformations, converting the pro- and is the object file format used in CP/M, up-and-coming C++ language. DWARF 2 gram's data and state back into the terms DOS and OS/2 systems, as well as a small was released as a draft standard in 1990. that the programmer originally used in the number of embedded systems.
Recommended publications
  • Introduction to Programming in Fortran 77 for Students of Science and Engineering
    Introduction to programming in Fortran 77 for students of Science and Engineering Roman GrÄoger University of Pennsylvania, Department of Materials Science and Engineering 3231 Walnut Street, O±ce #215, Philadelphia, PA 19104 Revision 1.2 (September 27, 2004) 1 Introduction Fortran (FORmula TRANslation) is a programming language designed speci¯cally for scientists and engineers. For the past 30 years Fortran has been used for such projects as the design of bridges and aeroplane structures, it is used for factory automation control, for storm drainage design, analysis of scienti¯c data and so on. Throughout the life of this language, groups of users have written libraries of useful standard Fortran programs. These programs can be borrowed and used by other people who wish to take advantage of the expertise and experience of the authors, in a similar way in which a book is borrowed from a library. Fortran belongs to a class of higher-level programming languages in which the programs are not written directly in the machine code but instead in an arti¯cal, human-readable language. This source code consists of algorithms built using a set of standard constructions, each consisting of a series of commands which de¯ne the elementary operations with your data. In other words, any algorithm is a cookbook which speci¯es input ingredients, operations with them and with other data and ¯nally returns one or more results, depending on the function of this algorithm. Any source code has to be compiled in order to obtain an executable code which can be run on your computer.
    [Show full text]
  • A Beginner's Guide to Freebasic
    A Beginner’s Guide to FreeBasic Richard D. Clark Ebben Feagan A Clark Productions / HMCsoft Book Copyright (c) Ebben Feagan and Richard Clark. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". The source code was compiled under version .17b of the FreeBasic compiler and tested under Windows 2000 Professional and Ubuntu Linux 6.06. Later compiler versions may require changes to the source code to compile successfully and results may differ under different operating systems. All source code is released under version 2 of the Gnu Public License (http://www.gnu.org/copyleft/gpl.html). The source code is provided AS IS, WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Microsoft Windows®, Visual Basic® and QuickBasic® are registered trademarks and are copyright © Microsoft Corporation. Ubuntu is a registered trademark of Canonical Limited. 2 To all the members of the FreeBasic community, especially the developers. 3 Acknowledgments Writing a book is difficult business, especially a book on programming. It is impossible to know how to do everything in a particular language, and everyone learns something from the programming community. I have learned a multitude of things from the FreeBasic community and I want to send my thanks to all of those who have taken the time to post answers and examples to questions.
    [Show full text]
  • The GNU Linker
    The GNU linker ld (GNU Binutils) Version 2.37 Steve Chamberlain Ian Lance Taylor Red Hat Inc [email protected], [email protected] The GNU linker Edited by Jeffrey Osier ([email protected]) Copyright c 1991-2021 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled \GNU Free Documentation License". i Table of Contents 1 Overview :::::::::::::::::::::::::::::::::::::::: 1 2 Invocation ::::::::::::::::::::::::::::::::::::::: 3 2.1 Command-line Options ::::::::::::::::::::::::::::::::::::::::: 3 2.1.1 Options Specific to i386 PE Targets :::::::::::::::::::::: 40 2.1.2 Options specific to C6X uClinux targets :::::::::::::::::: 47 2.1.3 Options specific to C-SKY targets :::::::::::::::::::::::: 48 2.1.4 Options specific to Motorola 68HC11 and 68HC12 targets :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 48 2.1.5 Options specific to Motorola 68K target :::::::::::::::::: 48 2.1.6 Options specific to MIPS targets ::::::::::::::::::::::::: 49 2.1.7 Options specific to PDP11 targets :::::::::::::::::::::::: 49 2.2 Environment Variables :::::::::::::::::::::::::::::::::::::::: 50 3 Linker Scripts:::::::::::::::::::::::::::::::::: 51 3.1 Basic Linker Script Concepts :::::::::::::::::::::::::::::::::: 51 3.2 Linker Script
    [Show full text]
  • The “Stabs” Debug Format
    The \stabs" debug format Julia Menapace, Jim Kingdon, David MacKenzie Cygnus Support Cygnus Support Revision TEXinfo 2017-08-23.19 Copyright c 1992{2021 Free Software Foundation, Inc. Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon, and David MacKenzie. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled \GNU Free Documentation License". i Table of Contents 1 Overview of Stabs ::::::::::::::::::::::::::::::: 1 1.1 Overview of Debugging Information Flow ::::::::::::::::::::::: 1 1.2 Overview of Stab Format ::::::::::::::::::::::::::::::::::::::: 1 1.3 The String Field :::::::::::::::::::::::::::::::::::::::::::::::: 2 1.4 A Simple Example in C Source ::::::::::::::::::::::::::::::::: 3 1.5 The Simple Example at the Assembly Level ::::::::::::::::::::: 4 2 Encoding the Structure of the Program ::::::: 7 2.1 Main Program :::::::::::::::::::::::::::::::::::::::::::::::::: 7 2.2 Paths and Names of the Source Files :::::::::::::::::::::::::::: 7 2.3 Names of Include Files:::::::::::::::::::::::::::::::::::::::::: 8 2.4 Line Numbers :::::::::::::::::::::::::::::::::::::::::::::::::: 9 2.5 Procedures ::::::::::::::::::::::::::::::::::::::::::::::::::::: 9 2.6 Nested Procedures::::::::::::::::::::::::::::::::::::::::::::: 11 2.7 Block Structure
    [Show full text]
  • AN125: Integrating Raisonance 8051 Tools Into The
    AN125 INTEGRATING RAISONANCE 8051 TOOLS INTO THE SILICON LABS IDE 1. Introduction 4. Configure the Tool Chain This application note describes how to integrate the Integration Dialog Raisonance 8051 Tools into the Silicon Laboratories Under the 'Project' menu, select 'Tool Chain Integration’ IDE (Integrated Development Environment). Integration to bring up the dialog box shown below. Raisonance provides an efficient development environment with (Ride 7) is the default. To use Raisonance (Ride 6), you compose, edit, build, download and debug operations can select it from the 'Preset Name' drop down box integrated in the same program. under 'Tools Definition Presets'. Next, define the Raisonance assembler, compiler, and linker as shown in 2. Key Points the following sections. The Intel OMF-51 absolute object file generated by the Raisonance 8051 tools enables source-level debug from the Silicon Labs IDE. Once Raisonance Tools are integrated into the IDE they are called by simply pressing the ‘Assemble/ Compile Current File’ button or the ‘Build/Make Project’ button. See the “..\Silabs\MCU\Examples” directory for examples that can be used with the Raisonance tools. Information in this application note applies to Version 4.00 and later of the Silicon Labs IDE and Ride7 and later of the Raisonance 8051 tools. 4.1. Assembler Definition 1. Under the ‘Assembler’ tab, if the assembler 3. Create a Project in the Silicon executable is not already defined, click the browse Labs IDE button next to the ‘Executable:’ text box, and locate the assembler executable. The default location for A project is necessary in order to link assembly files the Raisonance assembler is: created by the compiler and build an absolute ‘OMF-51’ C:\Program Files\Raisonance\Ride7\bin\ma51.exe output file.
    [Show full text]
  • 4 Using HLA with the HIDE Integrated Development Environment
    HLA Reference Manual 5/24/10 Chapter 4 4 Using HLA with the HIDE Integrated Development Environment This chapter describes two IDEs (Integrated Development Environments) for HLA: HIDE and RadASM. 4.1 The HLA Integrated Development Environment (HIDE) Sevag has written a nice HLA-specified integrated development environment for HLA called HIDE (HLA IDE). This one is a bit easier to install, set up, and use than RadASM (at the cost of being a little less flexible). HIDE is great for beginners who want to get up and running with a minimal amount of fuss. You can find HIDE at the HIDE home page: http://sites.google.com/site/highlevelassembly/downloads/hide Contact: [email protected] Note: the following documentation was provided by Sevag. Thanks Sevag! 4.1.1 Description HIDE is an integrated development environment for use with Randall Hyde's HLA (High Level Assembler). The HIDE package contains various 3rd party programs and tools to provide for a complete environment that requires no files external to the package. Designed for a system- friendly interface, HIDE makes no changes to your system registry and requires no global environment variables to function. The only exception is ResEd (a 3rd party Resource Editor written by Ketil.O) which saves its window position into the registry. 4.1.2 Operation HIDE is an integrated development environment for use with Randall Hyde's HLA (High Level Assembler). The HIDE package contains various 3rd party programs and tools to provide for a complete environment that requires no files external to the package. Designed for a system- friendly interface, HIDE makes no changes to your system registry and requires no global environment variables to function.
    [Show full text]
  • Fish & Wildlife News
    U.S. Fish & Wildlife Service Winter 2016 spotlight Fish & Wildlife News Get the News online weeks ahead of print. Visit <fws.gov/home/fwn> SPOTLIGHT Strategic Habitat Conservation 14 Unfinished Story 20 Sharing the Land 26 and more... what’s inside Departments Features From the Director / 1 SPOTLIGHT News / 2 Curator’s Corner / 42 STRATEGIC Our People / 43 HABITAT CONSERVATION 14 by PAUL SOUZA The Next Generation of Wildlife Conservation | and TOM MELIUS Catching On to Border Crossing / 24 Connect the Surrogates / 18 Working together across Connecticut / 30 Preserving Oregon’s state lines to protect the A landscape conservation Willamette Valley magnificent Great Lakes design for the Connecticut River watershed takes shape Protecting the Flint Conservation for Islands of Shelter Hills / 32 Sustainability / 34 by Design / 38 Surrogates of the Programs and partners Wildlife and people benefit Vast Tallgrass Prairie stand together to ensure from forward-looking the future of Alaska’s rich landscape conservation social-ecological system vision for California’s ON THE COVER: BULL ON THE NATIONAL BISON RANGE. PHOTO: DAVE FITZPATRICK, Central Valley VOLUNTEER 2 / Fish & Wildlife News Winter 2016 from the director Seeing the Big Picture One of the best parts about being the Director of the U.S. Fish and Wildlife Service is having the opportunity to travel throughout our great nation. To quote the late Johnny Cash, “I’ve been everywhere, man.” From the Artic to the Everglades, I’m continually In this issue of Fish and Wildlife News, we travel awed by the landscapes surrounding me, and to every region to provide a sense of how these wherever I go, I similarly find special people landscape-scale efforts are proceeding.
    [Show full text]
  • The IAR XLINK Linker™ and IAR XLIB Librarian™ Reference Guide
    IAR Linker and Library To o l s Reference Guide Version 4.60 XLINK-460G COPYRIGHT NOTICE © Copyright 1987–2007 IAR Systems. All rights reserved. No part of this document may be reproduced without the prior written consent of IAR Systems. The software described in this document is furnished under a license and may only be used or copied in accordance with the terms of such a license. DISCLAIMER The information in this document is subject to change without notice and does not represent a commitment on any part of IAR Systems. While the information contained herein is assumed to be accurate, IAR Systems assumes no responsibility for any errors or omissions. In no event shall IAR Systems, its employees, its contractors, or the authors of this document be liable for special, direct, indirect, or consequential damage, losses, costs, charges, claims, demands, claim for lost profits, fees, or expenses of any nature or kind. TRADEMARKS IAR, IAR Systems, IAR Embedded Workbench, IAR MakeApp, C-SPY, visualSTATE, From Idea To Target, IAR KickStart Kit and IAR PowerPac are trademarks or registered trademarks owned by IAR Systems AB. All other product names are trademarks or registered trademarks of their respective owners. EDITION NOTICE April 2007 Part number: XLINK-460G The IAR Linker and Library Tools Reference Guide replaces all versions of the IAR XLINK Linker™ and IAR XLIB Librarian™ Reference Guide. XLINK-460G Contents Tables .....................................................................................................................
    [Show full text]
  • Packet Structure Definition
    xx Tektronix Logic Analyzer Online Help ZZZ PrintedHelpDocument *P077003206* 077-0032-06 Tektronix Logic Analyzer Online Help ZZZ PrintedHelpDocument www.tektronix.com 077-0032-06 Copyright © Tektronix. All rights reserved. Licensed software products are owned by Tektronix or its subsidiaries or suppliers, and are protected by national copyright laws and international treaty provisions. Tektronix products are covered by U.S. and foreign patents, issued and pending. Information in this publication supersedes that in all previously published material. Specifications and price change privileges reserved. TEKTRONIX and TEK are registered trademarks of Tektronix, Inc. D-Max, MagniVu, iView, iVerify, iCapture, iLink, PowerFlex, and TekLink are trademarks of Tektronix, Inc. 076-0113-06 077-0032-06 April 27, 2012 Contacting Tektronix Tektronix, Inc. 14150 SWKarlBraunDrive P.O. Box 500 Beaverton, OR 97077 USA For product information, sales, service, and technical support: In North America, call 1-800-833-9200. Worldwide, visit www.tektronix.com to find contacts in your area. Warranty Tektronix warrants that this product will be free from defects in materials and workmanship for a period of one (1) year from the date of shipment. If any such product proves defective during this warranty period, Tektronix, at its option, either will repair the defective product without charge for parts and labor, or will provide a replacement in exchange for the defective product. Parts, modules and replacement products used by Tektronix for warranty work may be new or reconditioned to like new performance. All replaced parts, modules and products become the property of Tektronix. In order to obtain service under this warranty, Customer must notify Tektronix of the defect before the expiration of the warranty period and make suitable arrangements for the performance of service.
    [Show full text]
  • Congressional Record United States Th of America PROCEEDINGS and DEBATES of the 111 CONGRESS, FIRST SESSION
    E PL UR UM IB N U U S Congressional Record United States th of America PROCEEDINGS AND DEBATES OF THE 111 CONGRESS, FIRST SESSION Vol. 155 WASHINGTON, WEDNESDAY, OCTOBER 28, 2009 No. 158 Senate The Senate met at 9:30 a.m. and was ator from the State of Colorado, to perform this body now. We also have the loss called to order by the Honorable MARK the duties of the Chair. carryback, which is extremely impor- UDALL, a Senator from the State of ROBERT C. BYRD, tant for businesses at this time, also Colorado. President pro tempore. widely agreed upon. It was originally Mr. UDALL of Colorado thereupon sponsored by Senator BUNNING, and PRAYER assumed the chair as Acting President now Senator BAUCUS and others have The Chaplain, Dr. Barry C. Black, of- pro tempore. agreed to this—not two or three Sen- fered the following prayer: f ators but significant numbers on both Let us pray. sides. We could get those done. We have RECOGNITION OF THE MAJORITY given the Republicans a request to do Father of all, we praise and glorify LEADER Your Holy Name. You are the fountain it in 2 hours, and Senators said they of life, the source of all goodness, and The ACTING PRESIDENT pro tem- don’t even need that much time to get the center of our joy. pore. The majority leader is recog- this done. Mr. MCCONNELL. Mr. President, Today, fill our lawmakers with Your nized. would the majority leader yield? blessings. Bless them with the courage f Mr.
    [Show full text]
  • IAR Linker and Library Tools Reference Guide
    IAR Linker and Library Tools Reference Guide XLINK-540 XLINK-540 COPYRIGHT NOTICE © 1987–2012 IAR Systems AB. No part of this document may be reproduced without the prior written consent of IAR Systems AB. The software described in this document is furnished under a license and may only be used or copied in accordance with the terms of such a license. DISCLAIMER The information in this document is subject to change without notice and does not represent a commitment on any part of IAR Systems. While the information contained herein is assumed to be accurate, IAR Systems assumes no responsibility for any errors or omissions. In no event shall IAR Systems, its employees, its contractors, or the authors of this document be liable for special, direct, indirect, or consequential damage, losses, costs, charges, claims, demands, claim for lost profits, fees, or expenses of any nature or kind. TRADEMARKS IAR Systems, IAR Embedded Workbench, C-SPY, visualSTATE, The Code to Success, IAR KickStart Kit, I-jet, IAR, and the logotype of IAR Systems are trademarks or registered trademarks owned by IAR Systems AB. Microsoft and Windows are registered trademarks of Microsoft Corporation. Adobe and Acrobat Reader are registered trademarks of Adobe Systems Incorporated. All other product names are trademarks or registered trademarks of their respective owners. EDITION NOTICE June 2012 Part number: XLINK-540 The IAR Linker and Library Tools Reference Guide replaces all versions of the IAR XLINK Linker™ and IAR XLIB Librarian™ Reference Guide. XLINK-540 Contents Tables ........................................................................................................................ 7 Preface ...................................................................................................................... 9 Who should read this guide ................................................................. 9 How to use this guide ............................................................................
    [Show full text]
  • Norse Mythological Elements in <I>The Hobbit</I>
    Volume 9 Number 4 Article 17 12-15-1983 Norse Mythological Elements in The Hobbit Mitzi M. Brunsdale Follow this and additional works at: https://dc.swosu.edu/mythlore Part of the Children's and Young Adult Literature Commons Recommended Citation Brunsdale, Mitzi M. (1983) "Norse Mythological Elements in The Hobbit," Mythlore: A Journal of J.R.R. Tolkien, C.S. Lewis, Charles Williams, and Mythopoeic Literature: Vol. 9 : No. 4 , Article 17. Available at: https://dc.swosu.edu/mythlore/vol9/iss4/17 This Article is brought to you for free and open access by the Mythopoeic Society at SWOSU Digital Commons. It has been accepted for inclusion in Mythlore: A Journal of J.R.R. Tolkien, C.S. Lewis, Charles Williams, and Mythopoeic Literature by an authorized editor of SWOSU Digital Commons. An ADA compliant document is available upon request. For more information, please contact [email protected]. To join the Mythopoeic Society go to: http://www.mythsoc.org/join.htm Mythcon 51: A VIRTUAL “HALFLING” MYTHCON July 31 - August 1, 2021 (Saturday and Sunday) http://www.mythsoc.org/mythcon/mythcon-51.htm Mythcon 52: The Mythic, the Fantastic, and the Alien Albuquerque, New Mexico; July 29 - August 1, 2022 http://www.mythsoc.org/mythcon/mythcon-52.htm Abstract Considers the influence of Norse mythology on The Hobbit in particular, both in story elements and in “Northern courage.” Asserts that in The Hobbit, Tolkien “bases each of the major elements of the quest on an identifiably Northern mythological source.” Sees the moral choices presented in The Hobbit as characteristic of those faced by the “stern heroes of Northern myths” and important to children, whose notions of right and wrong are more basic than those of adults.
    [Show full text]